- {%include compatibilityMatrix.md k8s_tests_group=k8s_tests_group %}
+ {%include compatibility/compatibilityMatrix.md k8s_tests_group=k8s_tests_group %}
The following minimum Docker build versions are required:
diff --git a/go.mod b/go.mod
index 54a9a8bdadf..340989cc2ca 100644
--- a/go.mod
+++ b/go.mod
@@ -40,7 +40,7 @@ require (
github.com/jinzhu/copier v0.4.0
github.com/layer5io/gowrk2 v0.6.1
github.com/layer5io/meshery-operator v0.7.0
- github.com/layer5io/meshkit v0.7.67
+ github.com/layer5io/meshkit v0.7.70
github.com/layer5io/meshsync v0.6.24
github.com/layer5io/nighthawk-go v1.0.3
github.com/layer5io/service-mesh-performance v0.6.1
diff --git a/go.sum b/go.sum
index 201e16366a8..6ea6b556fbf 100644
--- a/go.sum
+++ b/go.sum
@@ -1616,8 +1616,8 @@ github.com/layer5io/gowrk2 v0.6.1/go.mod h1:ugxQ23+HwQ8dmZYJd1LScw/TLKbdgfN6OOtg
github.com/layer5io/meshery-operator v0.7.0 h1:YXlnsx2Xy5duM+W99vts2fFV4C1KnOCytQi2fxdQTUc=
github.com/layer5io/meshery-operator v0.7.0/go.mod h1:mVMpSrvSH1zgSmcjzk+/astXV5L34NlL/PcZMH6s2IU=
github.com/layer5io/meshkit v0.2.7/go.mod h1:QvEKV8wIEOabiFlUgiu+s78GpJTsRpoRw5pgvEX077Y=
-github.com/layer5io/meshkit v0.7.67 h1:eSC9muxZr5Z7ETpLd7Jr+jLjoj+P+YmcCd4nznnLZXg=
-github.com/layer5io/meshkit v0.7.67/go.mod h1:qs3OTId50i6ejcPQ1N9rw9o79vuCXgSR4QyJle/b8O0=
+github.com/layer5io/meshkit v0.7.70 h1:kEb+iZQCl7sb0il9X2lfhQJCh90xCq3qtWxPJ9AxPvU=
+github.com/layer5io/meshkit v0.7.70/go.mod h1:0vWf6kcrD9GL0pBd/Se8c2Gs/p6MbSNEgXnfLUOp/Zc=
github.com/layer5io/meshsync v0.6.24 h1:ui/u89NW2yHyCtdVaJuuzrag5a1CbhVB8Lp70/9Y+lw=
github.com/layer5io/meshsync v0.6.24/go.mod h1:0qI6ATBvkVx10C1ymH62NaGPy85ALFF3T9Dx/IEXfy0=
github.com/layer5io/nighthawk-go v1.0.3 h1:AGhip7TM8FjaDJ58jU/7BoPx+O45S7UNImfw7vC2Z0U=
diff --git a/mesheryctl/internal/cli/root/config/config.go b/mesheryctl/internal/cli/root/config/config.go
index 6cd2c5412d1..34f3b338ddc 100644
--- a/mesheryctl/internal/cli/root/config/config.go
+++ b/mesheryctl/internal/cli/root/config/config.go
@@ -146,7 +146,8 @@ func (mc *MesheryCtlConfig) SetCurrentContext(contextName string) error {
}
_, err := mc.CheckIfCurrentContextIsValid()
if err != nil {
- log.Errorf(err.Error())
+ log.Errorf("Error: %v", err.Error())
+
}
return err
diff --git a/mesheryctl/internal/cli/root/pattern/apply.go b/mesheryctl/internal/cli/root/pattern/apply.go
index 1028080d478..6e5609e39ea 100644
--- a/mesheryctl/internal/cli/root/pattern/apply.go
+++ b/mesheryctl/internal/cli/root/pattern/apply.go
@@ -287,7 +287,7 @@ func multiplePatternsConfirmation(profiles []models.MesheryPattern) int {
fmt.Printf("Name: %v\n", a.Name)
fmt.Printf("ID: %s\n", a.ID.String())
fmt.Printf("PatternFile:\n")
- fmt.Printf(a.PatternFile)
+ fmt.Println(a.PatternFile)
fmt.Println("---------------------")
}
diff --git a/mesheryctl/internal/cli/root/pattern/export.go b/mesheryctl/internal/cli/root/pattern/export.go
index df676dd1e53..c385090a594 100644
--- a/mesheryctl/internal/cli/root/pattern/export.go
+++ b/mesheryctl/internal/cli/root/pattern/export.go
@@ -27,6 +27,7 @@ import (
"github.com/layer5io/meshery/mesheryctl/internal/cli/root/config"
"github.com/layer5io/meshery/mesheryctl/pkg/utils"
"github.com/layer5io/meshery/server/models"
+ "github.com/layer5io/meshkit/encoding"
meshkitutils "github.com/layer5io/meshkit/utils"
"github.com/manifoldco/promptui"
"github.com/spf13/cobra"
@@ -126,7 +127,7 @@ func fetchPatternIDByName(baseUrl, patternName string) (string, error) {
TotalCount int `json:"total_count"`
Patterns []models.MesheryPattern `json:"patterns"`
}
- if err := meshkitutils.Unmarshal(string(buf), &response); err != nil {
+ if err := encoding.Unmarshal(buf, &response); err != nil {
return "", err
}
@@ -198,7 +199,7 @@ func fetchPatternData(dataURL string) (*models.MesheryPattern, error) {
}
var pattern models.MesheryPattern
- if err = meshkitutils.Unmarshal(buf.String(), &pattern); err != nil {
+ if err = encoding.Unmarshal((buf.Bytes()), &pattern); err != nil {
return nil, err
}
@@ -261,7 +262,7 @@ func getOwnerName(ownerID string, baseURL string) (string, error) {
return "", ErrReadFromBody(err)
}
- if err := meshkitutils.Unmarshal(string(body), &userProfile); err != nil {
+ if err := encoding.Unmarshal(body, &userProfile); err != nil {
return "", err
}
diff --git a/mesheryctl/internal/cli/root/registry/generate.go b/mesheryctl/internal/cli/root/registry/generate.go
index 189a17a6abf..a82616b6424 100644
--- a/mesheryctl/internal/cli/root/registry/generate.go
+++ b/mesheryctl/internal/cli/root/registry/generate.go
@@ -15,8 +15,10 @@
package registry
import (
+ "bytes"
"context"
"fmt"
+ "io"
"net/url"
"os"
"path/filepath"
@@ -179,9 +181,11 @@ func InvokeGenerationFromSheet(wg *sync.WaitGroup) error {
if err != nil {
return err
}
+ multiWriter := io.MultiWriter(os.Stdout, logFile)
+ multiErrorWriter := io.MultiWriter(os.Stdout, errorLogFile)
- utils.Log.UpdateLogOutput(logFile)
- utils.LogError.UpdateLogOutput(errorLogFile)
+ utils.Log.UpdateLogOutput(multiWriter)
+ utils.LogError.UpdateLogOutput(multiErrorWriter)
var wgForSpreadsheetUpdate sync.WaitGroup
wgForSpreadsheetUpdate.Add(1)
go func() {
@@ -237,18 +241,21 @@ func InvokeGenerationFromSheet(wg *sync.WaitGroup) error {
utils.LogError.Error(ErrGenerateModel(err, model.Model))
return
}
- modelDef, err := writeModelDefToFileSystem(&model, version, modelDirPath)
+ modelDef, alreadyExsit, err := writeModelDefToFileSystem(&model, version, modelDirPath)
if err != nil {
utils.LogError.Error(err)
return
}
+ if alreadyExsit {
+ totalAvailableModels--
+ }
comps, err := pkg.GenerateComponents()
if err != nil {
utils.LogError.Error(ErrGenerateModel(err, model.Model))
return
}
- utils.Log.Info("Current model: ", model.Model)
- utils.Log.Info(" extracted ", len(comps), " components for ", model.ModelDisplayName, " (", model.Model, ")")
+ lengthOfComps := len(comps)
+
for _, comp := range comps {
comp.Version = defVersion
// Assign the component status corresponding to model status.
@@ -267,19 +274,35 @@ func InvokeGenerationFromSheet(wg *sync.WaitGroup) error {
comp.Model = *modelDef
assignDefaultsForCompDefs(&comp, modelDef)
- err := comp.WriteComponentDefinition(compDirPath)
+ compAlreadyExist, err := comp.WriteComponentDefinition(compDirPath)
+ if compAlreadyExist {
+ lengthOfComps--
+ }
if err != nil {
utils.Log.Info(err)
}
}
-
+ if !alreadyExsit {
+ if len(comps) == 0 {
+ utils.LogError.Error(ErrGenerateModel(fmt.Errorf("no components found for model "), model.Model))
+ } else {
+ utils.Log.Info("Current model: ", model.Model)
+ utils.Log.Info(" extracted ", lengthOfComps, " components for ", model.ModelDisplayName, " (", model.Model, ")")
+ }
+ } else {
+ if len(comps) > 0 {
+ utils.Log.Info("Model already exists: ", model.Model)
+ } else {
+ utils.LogError.Error(ErrGenerateModel(fmt.Errorf("no components found for model "), model.Model))
+ }
+ }
spreadsheeetChan <- utils.SpreadsheetData{
Model: &model,
Components: comps,
}
modelToCompGenerateTracker.Set(model.Model, compGenerateTracker{
- totalComps: len(comps),
+ totalComps: lengthOfComps,
version: version,
})
}(model)
@@ -432,16 +455,21 @@ func GenerateDefsForCoreRegistrant(model utils.ModelCSV) error {
err = ErrGenerateModel(err, model.Model)
return err
}
- modelDef, err := writeModelDefToFileSystem(&model, version, modelDirPath) // how to infer this? @Beginner86 any idea? new column?
+ modelDef, alreadyExist, err := writeModelDefToFileSystem(&model, version, modelDirPath) // how to infer this? @Beginner86 any idea? new column?
if err != nil {
return ErrGenerateModel(err, model.Model)
}
+ if alreadyExist {
+ utils.Log.Info("Model already exists: ", model.Model)
+ }
componentDef.Model = *modelDef
- err = componentDef.WriteComponentDefinition(compDirPath)
+ _, err = componentDef.WriteComponentDefinition(compDirPath)
+
if err != nil {
err = ErrGenerateComponent(err, model.Model, componentDef.DisplayName)
utils.LogError.Error(err)
}
+
return nil
})
err = gw.Walk()
@@ -501,20 +529,62 @@ func createVersionedDirectoryForModelAndComp(version, modelName string) (string,
return modelDirPath, compDirPath, err
}
-func writeModelDefToFileSystem(model *utils.ModelCSV, version, modelDefPath string) (*v1beta1Model.ModelDefinition, error) {
+func writeModelDefToFileSystem(model *utils.ModelCSV, version, modelDefPath string) (*v1beta1Model.ModelDefinition, bool, error) {
modelDef := model.CreateModelDefinition(version, defVersion)
- err := modelDef.WriteModelDefinition(modelDefPath+"/model.json", "json")
+ filePath := filepath.Join(modelDefPath, "model.json")
+ tmpFilePath := filepath.Join(modelDefPath, "tmp_model.json")
+
+ // Ensure the temporary file is removed regardless of what happens
+ defer func() {
+ _ = os.Remove(tmpFilePath)
+ }()
+
+ // Check if the file exists
+
+ if _, err := os.Stat(filePath); err == nil {
+ existingData, err := os.ReadFile(filePath)
+ if err != nil {
+ goto NewGen
+ }
+
+ err = modelDef.WriteModelDefinition(tmpFilePath, "json")
+ if err != nil {
+ goto NewGen
+ }
+
+ newData, err := os.ReadFile(tmpFilePath)
+ if err != nil {
+ goto NewGen
+ }
+
+ // Compare the existing and new data
+ if bytes.Equal(existingData, newData) {
+ var oldModelDef v1beta1Model.ModelDefinition
+ err = encoding.Unmarshal(existingData, &oldModelDef)
+ if err != nil {
+ goto NewGen
+ }
+ // If they are the same, return without changes
+ return &oldModelDef, true, nil
+ }
+ }
+NewGen:
+ // Write the model definition to the actual file if it's new or different
+ err := modelDef.WriteModelDefinition(filePath, "json")
if err != nil {
- return nil, err
+ return nil, false, err
}
- return &modelDef, nil
+
+ return &modelDef, false, nil
}
func logModelGenerationSummary(modelToCompGenerateTracker *store.GenerticThreadSafeStore[compGenerateTracker]) {
for key, val := range modelToCompGenerateTracker.GetAllPairs() {
utils.Log.Info(fmt.Sprintf("Generated %d components for model [%s] %s", val.totalComps, key, val.version))
totalAggregateComponents += val.totalComps
- totalAggregateModel++
+ if val.totalComps > 0 {
+ totalAggregateModel++
+ }
}
utils.Log.Info(fmt.Sprintf("-----------------------------\n-----------------------------\nGenerated %d models and %d components", totalAggregateModel, totalAggregateComponents))
diff --git a/mesheryctl/internal/cli/root/registry/update.go b/mesheryctl/internal/cli/root/registry/update.go
index da6c12e1889..8aba3ed1b61 100644
--- a/mesheryctl/internal/cli/root/registry/update.go
+++ b/mesheryctl/internal/cli/root/registry/update.go
@@ -15,6 +15,7 @@
package registry
import (
+ "bytes"
"encoding/json"
"fmt"
"os"
@@ -190,12 +191,44 @@ func InvokeCompUpdate() error {
utils.Log.Error(ErrUpdateComponent(err, modelName, component.Component))
continue
}
+ tmpFilePath := filepath.Join(versionPath, "components", "tmp_model.json")
+
+ // Ensure the temporary file is removed regardless of what happens
+ defer func() {
+ _ = os.Remove(tmpFilePath)
+ }()
+ if _, err := os.Stat(compPath); err == nil {
+ existingData, err := os.ReadFile(compPath)
+ if err != nil {
+ utils.Log.Error(err)
+ goto NewGen
+ }
+
+ err = mutils.WriteJSONToFile[comp.ComponentDefinition](tmpFilePath, componentDef)
+ if err != nil {
+ utils.Log.Error(err)
+ goto NewGen
+ }
+
+ newData, err := os.ReadFile(tmpFilePath)
+ if err != nil {
+ utils.Log.Error(err)
+ goto NewGen
+ }
+
+ if bytes.Equal(existingData, newData) {
+ utils.Log.Info("No changes detected for ", componentDef.Component.Kind)
+ continue
+ }
+ }
+ NewGen:
err = mutils.WriteJSONToFile[comp.ComponentDefinition](compPath, componentDef)
if err != nil {
utils.Log.Error(err)
continue
}
totalCompsUpdatedPerModelPerVersion++
+
}
compUpdateArray = append(compUpdateArray, compUpdateTracker{
totalComps: availableComponentsPerModelPerVersion,
diff --git a/mesheryctl/pkg/utils/component.go b/mesheryctl/pkg/utils/component.go
index a7034a2a5e9..72311bbec25 100644
--- a/mesheryctl/pkg/utils/component.go
+++ b/mesheryctl/pkg/utils/component.go
@@ -80,6 +80,12 @@ var compStyleValues = []string{
}
func (c *ComponentCSV) UpdateCompDefinition(compDef *component.ComponentDefinition) error {
+ var existingAddditionalProperties map[string]interface{}
+
+ if compDef.Metadata.AdditionalProperties != nil {
+ existingAddditionalProperties = compDef.Metadata.AdditionalProperties
+ }
+
metadata := map[string]interface{}{}
compMetadata, err := utils.MarshalAndUnmarshal[ComponentCSV, map[string]interface{}](*c)
if err != nil {
@@ -87,7 +93,6 @@ func (c *ComponentCSV) UpdateCompDefinition(compDef *component.ComponentDefiniti
}
var capabilities []capability.Capability
if c.Capabilities != "" {
-
err := encoding.Unmarshal([]byte(c.Capabilities), &capabilities)
if err != nil {
Log.Error(err)
@@ -97,6 +102,12 @@ func (c *ComponentCSV) UpdateCompDefinition(compDef *component.ComponentDefiniti
compDef.Capabilities = &capabilities
compDefStyles := &component.Styles{}
+ //Addtional properties from file
+ for key, value := range existingAddditionalProperties {
+ metadata[key] = value
+ }
+
+ //metadata properties from csv
for _, key := range compMetadataValues {
if key == "genealogy" {
genealogy, err := utils.Cast[string](compMetadata[key])
@@ -121,6 +132,7 @@ func (c *ComponentCSV) UpdateCompDefinition(compDef *component.ComponentDefiniti
}
}
+ //styling properties from csv
for _, key := range compStyleValues {
if c.Shape != "" {
shape := c.Shape
diff --git a/mesheryctl/pkg/utils/helpers.go b/mesheryctl/pkg/utils/helpers.go
index 829dc4678df..e5e01ca34ee 100644
--- a/mesheryctl/pkg/utils/helpers.go
+++ b/mesheryctl/pkg/utils/helpers.go
@@ -3,7 +3,6 @@ package utils
import (
"bufio"
"bytes"
- "encoding/json"
"fmt"
"io"
"math/rand"
@@ -25,8 +24,8 @@ import (
"github.com/layer5io/meshery/mesheryctl/internal/cli/root/config"
"github.com/layer5io/meshery/mesheryctl/pkg/constants"
"github.com/layer5io/meshery/server/models"
+ "github.com/layer5io/meshkit/encoding"
"github.com/layer5io/meshkit/logger"
- "github.com/layer5io/meshkit/utils"
"github.com/olekukonko/tablewriter"
"github.com/pkg/browser"
"github.com/pkg/errors"
@@ -650,7 +649,7 @@ func GetID(mesheryServerUrl, configuration string) ([]string, error) {
return idList, ErrReadResponseBody(err)
}
var dat map[string]interface{}
- if err = json.Unmarshal(body, &dat); err != nil {
+ if err = encoding.Unmarshal(body, &dat); err != nil {
return idList, ErrUnmarshal(errors.Wrap(err, "failed to unmarshal response body"))
}
if dat == nil {
@@ -686,7 +685,7 @@ func GetName(mesheryServerUrl, configuration string) (map[string]string, error)
return nameIdMap, ErrReadResponseBody(err)
}
var dat map[string]interface{}
- if err = json.Unmarshal(body, &dat); err != nil {
+ if err = encoding.Unmarshal(body, &dat); err != nil {
return nameIdMap, ErrUnmarshal(errors.Wrap(err, "failed to unmarshal response body"))
}
if dat == nil {
@@ -862,7 +861,7 @@ func GetSessionData(mctlCfg *config.MesheryCtlConfig) (*models.Preference, error
}
prefs := &models.Preference{}
- err = utils.Unmarshal(string(body), prefs)
+ err = encoding.Unmarshal(body, prefs)
if err != nil {
return nil, errors.New("Failed to process JSON data. Please sign into Meshery")
}
diff --git a/mesheryctl/pkg/utils/platform.go b/mesheryctl/pkg/utils/platform.go
index ac53fafad73..d131e3c90a0 100644
--- a/mesheryctl/pkg/utils/platform.go
+++ b/mesheryctl/pkg/utils/platform.go
@@ -172,7 +172,7 @@ func DownloadManifests(manifestArr []Manifest, rawManifestsURL string) error {
// download the manifest files to ~/.meshery/manifests folder
filepath := filepath.Join(MesheryFolder, ManifestsFolder, manifest.Path)
if err := meshkitutils.DownloadFile(filepath, manifestFile); err != nil {
- return errors.Wrapf(err, SystemError(fmt.Sprintf("failed to download %s file from %s", filepath, manifestFile)))
+ return errors.Wrapf(err, "failed to download %s file from %s", filepath, manifestFile)
}
}
}
@@ -184,19 +184,19 @@ func DownloadOperatorManifest() error {
operatorFilepath := filepath.Join(MesheryFolder, ManifestsFolder, MesheryOperator)
err := meshkitutils.DownloadFile(operatorFilepath, OperatorURL)
if err != nil {
- return errors.Wrapf(err, SystemError(fmt.Sprintf("failed to download %s file from %s operator file", operatorFilepath, MesheryOperator)))
+ return errors.Wrapf(err, "failed to download %s file from %s operator file", operatorFilepath, MesheryOperator)
}
brokerFilepath := filepath.Join(MesheryFolder, ManifestsFolder, MesheryOperatorBroker)
err = meshkitutils.DownloadFile(brokerFilepath, BrokerURL)
if err != nil {
- return errors.Wrapf(err, SystemError(fmt.Sprintf("failed to download %s file from %s operator file", brokerFilepath, MesheryOperatorBroker)))
+ return errors.Wrapf(err, "failed to download %s file from %s operator file", brokerFilepath, MesheryOperatorBroker)
}
meshsyncFilepath := filepath.Join(MesheryFolder, ManifestsFolder, MesheryOperatorMeshsync)
err = meshkitutils.DownloadFile(meshsyncFilepath, MeshsyncURL)
if err != nil {
- return errors.Wrapf(err, SystemError(fmt.Sprintf("failed to download %s file from %s operator file", meshsyncFilepath, MesheryOperatorMeshsync)))
+ return errors.Wrapf(err, "failed to download %s file from %s operator file", meshsyncFilepath, MesheryOperatorMeshsync)
}
return nil
@@ -403,7 +403,7 @@ func DownloadDockerComposeFile(ctx *config.Context, force bool) error {
}
if err := meshkitutils.DownloadFile(DockerComposeFile, fileURL); err != nil {
- return errors.Wrapf(err, SystemError(fmt.Sprintf("failed to download %s file from %s", DockerComposeFile, fileURL)))
+ return errors.Wrapf(err, "failed to download %s file from %s", DockerComposeFile, fileURL)
}
}
return nil
@@ -615,7 +615,7 @@ func CreateManifestsFolder() error {
log.Debug("creating " + ManifestsFolder + "folder...")
// create a manifests folder under ~/.meshery to store the manifest files
if err := os.MkdirAll(filepath.Join(MesheryFolder, ManifestsFolder), os.ModePerm); err != nil {
- return errors.Wrapf(err, SystemError(fmt.Sprintf("failed to make %s directory", ManifestsFolder)))
+ return errors.Wrapf(err, "failed to make %s directory", ManifestsFolder)
}
log.Debug("created manifests folder...")
diff --git a/server/cmd/error.go b/server/cmd/error.go
index 4b08bbf236e..4d119ceed46 100644
--- a/server/cmd/error.go
+++ b/server/cmd/error.go
@@ -22,10 +22,6 @@ const (
ErrCreatingOPAInstanceCode = "meshery-server-1323"
)
-var (
- ErrCreatingOPAInstance = errors.New(ErrCreatingOPAInstanceCode, errors.Alert, []string{"Error creating OPA Instance."}, []string{"Unable to create OPA instance, policies will not be evaluated."}, []string{}, []string{})
-)
-
func ErrInitializingRegistryManager(err error) error {
return errors.New(ErrInitializingRegistryManagerCode, errors.Fatal, []string{"could not initialize registry manager"}, []string{err.Error()}, []string{"could not migrate tables into the database"}, []string{"make sure the database instance passed is not nil"})
}
@@ -77,3 +73,7 @@ func ErrClosingDatabaseInstance(err error) error {
func ErrInitializingKeysRegistration(err error) error {
return errors.New(ErrInitializingKeysRegistrationCode, errors.Fatal, []string{"could not initialize keys registry manager"}, []string{err.Error()}, []string{"could not migrate tables into the database"}, []string{"make sure the database instance passed is not nil"})
}
+
+func ErrCreatingOPAInstance(err error) error {
+ return errors.New(ErrCreatingOPAInstanceCode, errors.Alert, []string{"Error creating OPA Instance."}, []string{err.Error()}, []string{"Unable to create OPA instance, policies will not be evaluated."}, []string{"Ensure relationships are registered"})
+}
\ No newline at end of file
diff --git a/server/cmd/main.go b/server/cmd/main.go
index 1d8b8b65ea1..61b15836329 100644
--- a/server/cmd/main.go
+++ b/server/cmd/main.go
@@ -280,7 +280,7 @@ func main() {
models.SeedComponents(log, hc, regManager)
r, err := policies.NewRegoInstance(PoliciesPath, regManager)
if err != nil {
- log.Warn(ErrCreatingOPAInstance)
+ log.Warn(ErrCreatingOPAInstance(err))
} else {
rego = *r
}
diff --git a/server/core/utils.go b/server/core/utils.go
index 09d20546558..f3a2a2d4172 100644
--- a/server/core/utils.go
+++ b/server/core/utils.go
@@ -1,7 +1,6 @@
package core
import (
- "fmt"
"io"
"os"
"path/filepath"
@@ -40,7 +39,7 @@ func CreateManifestsFolder() error {
log.Debug("creating " + ManifestsFolder + "folder...")
// create a manifests folder under ~/.meshery to store the manifest files
if err := os.MkdirAll(mesheryManifestFolder, os.ModePerm); err != nil {
- return errors.Wrapf(err, fmt.Sprintf("failed to make %s directory", ManifestsFolder))
+ return errors.Wrapf(err, "failed to make %s directory", ManifestsFolder)
}
log.Debug("created manifests folder...")
diff --git a/server/handlers/error.go b/server/handlers/error.go
index 0b60c48c0d8..71428a5d872 100644
--- a/server/handlers/error.go
+++ b/server/handlers/error.go
@@ -587,7 +587,7 @@ func ErrGetConnections(err error) error {
}
func ErrWritingIntoFile(err error, obj string) error {
- return errors.New(ErrWritingIntoFileCode, errors.Alert, []string{fmt.Sprintf("failed to write into file %s" + obj)}, []string{err.Error()}, []string{"Insufficient permissions to write into file", "file might be corrupted"}, []string{"check if sufficient permissions are givent to the file", "check if the file is corrupted"})
+ return errors.New(ErrWritingIntoFileCode, errors.Alert, []string{fmt.Sprintf("failed to write into file %s", obj)}, []string{err.Error()}, []string{"Insufficient permissions to write into file", "file might be corrupted"}, []string{"check if sufficient permissions are givent to the file", "check if the file is corrupted"})
}
func ErrBuildOCIImg(err error) error {
diff --git a/server/handlers/meshery_filter_handler.go b/server/handlers/meshery_filter_handler.go
index f20b073bf9c..9d0d0ba8c86 100644
--- a/server/handlers/meshery_filter_handler.go
+++ b/server/handlers/meshery_filter_handler.go
@@ -156,7 +156,7 @@ func (h *Handler) handleFilterPOST(
parsedBody.FilterData.Name = "meshery-filter-" + utils.GetRandomAlphabetsOfDigit(5)
}
// Assign a location if no location is specified
- if parsedBody.FilterData.Location == nil || len(parsedBody.FilterData.Location) == 0 {
+ if len(parsedBody.FilterData.Location) == 0 {
parsedBody.FilterData.Location = map[string]interface{}{
"host": "",
"path": "",
@@ -640,8 +640,8 @@ func (h *Handler) generateFilterComponent(config string) (string, error) {
if ok {
filterID, _ := uuid.NewV4()
filterSvc := component.ComponentDefinition{
- Id: filterID,
- DisplayName: strings.ToLower(filterCompDef.Component.Kind) + utils.GetRandomAlphabetsOfDigit(5),
+ Id: filterID,
+ DisplayName: strings.ToLower(filterCompDef.Component.Kind) + utils.GetRandomAlphabetsOfDigit(5),
Component: component.Component{
Kind: filterCompDef.Component.Kind,
Version: filterCompDef.Component.Version,
@@ -649,7 +649,7 @@ func (h *Handler) generateFilterComponent(config string) (string, error) {
Model: model.ModelDefinition{
Name: filterCompDef.Model.Name,
Model: model.Model{
- Version: filterCompDef.Model.Model.Version,
+ Version: filterCompDef.Model.Model.Version,
},
},
Metadata: component.ComponentDefinition_Metadata{
diff --git a/server/handlers/meshery_pattern_handler.go b/server/handlers/meshery_pattern_handler.go
index 313b84c5b44..6a67cc6cf5f 100644
--- a/server/handlers/meshery_pattern_handler.go
+++ b/server/handlers/meshery_pattern_handler.go
@@ -12,6 +12,7 @@ import (
"os"
"path"
"path/filepath"
+ "slices"
"strconv"
"strings"
"sync"
@@ -26,7 +27,6 @@ import (
"github.com/layer5io/meshery/server/models"
pCore "github.com/layer5io/meshery/server/models/pattern/core"
"github.com/layer5io/meshery/server/models/pattern/resource/selector"
- "github.com/layer5io/meshery/server/models/pattern/stages"
patternutils "github.com/layer5io/meshery/server/models/pattern/utils"
"github.com/layer5io/meshkit/encoding"
"github.com/layer5io/meshkit/errors"
@@ -43,6 +43,7 @@ import (
"github.com/layer5io/meshkit/utils/kubernetes/kompose"
"github.com/layer5io/meshkit/utils/walker"
+ regv1beta1 "github.com/layer5io/meshkit/models/meshmodel/registry/v1beta1"
"github.com/meshery/schemas/models/v1alpha2"
"github.com/meshery/schemas/models/v1beta1/component"
"github.com/meshery/schemas/models/v1beta1/connection"
@@ -341,6 +342,9 @@ func (h *Handler) handlePatternPOST(
if sourcetype == string(models.HelmChart) {
helmSourceResp, err := http.Get(parsedBody.URL)
defer func() {
+ if helmSourceResp == nil {
+ return
+ }
_ = helmSourceResp.Body.Close()
}()
if err != nil {
@@ -404,7 +408,7 @@ func (h *Handler) handlePatternPOST(
return
}
- bytPattern, _ := yaml.Marshal(pattern)
+ bytPattern, _ := encoding.Marshal(pattern)
mesheryPattern = &models.MesheryPattern{
Name: parsedBody.Name,
@@ -762,7 +766,7 @@ func githubRepoDesignScan(
return err //always a meshkit error
}
- patternByt, _ := yaml.Marshal(pattern)
+ patternByt, _ := encoding.Marshal(pattern)
af := models.MesheryPattern{
Name: strings.TrimSuffix(f.Name, ext),
@@ -836,7 +840,7 @@ func genericHTTPDesignFile(fileURL, patternName, sourceType string, reg *meshmod
pattern.Name = patternName
}
- patternByt, _ := yaml.Marshal(pattern)
+ patternByt, _ := encoding.Marshal(pattern)
url := strings.Split(fileURL, "/")
af := models.MesheryPattern{
@@ -1450,20 +1454,19 @@ func (h *Handler) CloneMesheryPatternHandler(
return
}
pattern.PatternFile = patternFileStr
- }
-
- _, err = provider.SaveMesheryPattern(token, pattern)
- if err != nil {
- h.log.Error(ErrSavePattern(err))
- http.Error(rw, ErrSavePattern(err).Error(), http.StatusInternalServerError)
+ _, err = provider.SaveMesheryPattern(token, pattern)
+ if err != nil {
+ h.log.Error(ErrSavePattern(err))
+ http.Error(rw, ErrSavePattern(err).Error(), http.StatusInternalServerError)
- event := eventBuilder.WithSeverity(events.Error).WithMetadata(map[string]interface{}{
- "error": ErrSavePattern(_errors.Wrapf(err, "failed to persist converted v1beta1 design file \"%s\" with id: %s", parsedBody.Name, patternID)),
- }).WithDescription(ErrSavePattern(err).Error()).Build()
+ event := eventBuilder.WithSeverity(events.Error).WithMetadata(map[string]interface{}{
+ "error": ErrSavePattern(_errors.Wrapf(err, "failed to persist converted v1beta1 design file \"%s\" with id: %s", parsedBody.Name, patternID)),
+ }).WithDescription(ErrSavePattern(err).Error()).Build()
- _ = provider.PersistEvent(event)
- go h.config.EventBroadcaster.Publish(userID, event)
- return
+ _ = provider.PersistEvent(event)
+ go h.config.EventBroadcaster.Publish(userID, event)
+ return
+ }
}
resp, err := provider.CloneMesheryPattern(r, patternID, parsedBody)
@@ -1736,7 +1739,10 @@ func (h *Handler) GetMesheryPatternHandler(
}
rw.Header().Set("Content-Type", "application/json")
- json.NewEncoder(rw).Encode(pattern)
+ if err := json.NewEncoder(rw).Encode(pattern); err != nil {
+ http.Error(rw, "Failed to encode response", http.StatusInternalServerError)
+ return
+ }
}
func (h *Handler) formatPatternOutput(rw http.ResponseWriter, content []byte, format, sourcetype string, eventBuilder *events.EventBuilder, URL, action string) {
@@ -1781,21 +1787,24 @@ func (h *Handler) formatPatternOutput(rw http.ResponseWriter, content []byte, fo
// Since the client currently does not support pattern imports and externalized variables, the first(import) stage of pattern engine
// is evaluated here to simplify the pattern file such that it is valid when a deploy takes place
-func evalImportAndReferenceStage(p *pattern.PatternFile) (newp pattern.PatternFile) {
- chain := stages.CreateChain()
- chain.
- // Add(stages.Import(sip, sap)). enable this
- Add(stages.Filler(false)).
- Add(func(data *stages.Data, err error, next stages.ChainStageNextFunction) {
- data.Lock.Lock()
- newp = *data.Pattern
- data.Lock.Unlock()
- }).
- Process(&stages.Data{
- Pattern: p,
- })
- return newp
-}
+
+//unsued currently
+
+// func evalImportAndReferenceStage(p *pattern.PatternFile) (newp pattern.PatternFile) {
+// chain := stages.CreateChain()
+// chain.
+// // Add(stages.Import(sip, sap)). enable this
+// Add(stages.Filler(false)).
+// Add(func(data *stages.Data, err error, next stages.ChainStageNextFunction) {
+// data.Lock.Lock()
+// newp = *data.Pattern
+// data.Lock.Unlock()
+// }).
+// Process(&stages.Data{
+// Pattern: p,
+// })
+// return newp
+// }
// Only pass Meshkit err here or there will be a panic
func addMeshkitErr(res *meshes.EventsResponse, err error) {
@@ -2069,9 +2078,34 @@ func mapModelRelatedData(reg *meshmodel.RegistryManager, patternFile *pattern.Pa
continue
}
- wc, err := s.GetDefinition(comp.Component.Kind, comp.Model.Model.Version, comp.Model.Name, comp.Component.Version)
+ wc, err := s.GetDefinition(comp.Component.Kind, comp.Model.Model.Version, comp.Model.Name, comp.Component.Version, true)
if err != nil {
- return err
+ m := []string{"meshery", "meshery-core", "meshery-shapes", "meshery-flowchart"}
+ // if model is one of those defined in the slice above as meshery, and no matching defs were found,
+ // try to find the component just by name, this ensures the component is upgraded to newer model.
+ // Eg: Some old designs contains "Comment" component under "meshery" model instead of "meshery-core"
+
+
+ // Update the component kind to reflect the current registry.
+ // Eg: The Connection component for k8s, had "kind" updated to "KuberntesConnection",hence any designs which has model k8s and kind "Connection" will fail, to ensure it gets converted, update the kind
+ if comp.Model.Name == "kubernetes" && comp.Component.Kind == "Connection" {
+ comp.Component.Kind = "KubernetesConnection"
+ } else if comp.Model.Name == "aws" || comp.Model.Name == "gcp" {
+ comp.Component.Kind = fmt.Sprintf("%s %s", strings.ToUpper(comp.Model.Name), comp.Component.Kind)
+ } else if !slices.Contains(m, comp.Model.Name) {
+ return err
+ }
+
+ entities, _, _, _ := reg.GetEntities(®v1beta1.ComponentFilter{
+ Name: comp.Component.Kind,
+ APIVersion: comp.Component.Version,
+ })
+ comp, found := selector.FindCompDefinitionWithVersion(entities, comp.Model.Model.Version)
+
+ if found {
+ wc = *comp
+ }
+
}
comp.Model = wc.Model
diff --git a/server/handlers/middlewares.go b/server/handlers/middlewares.go
index 3cc285667be..69a235d7d12 100644
--- a/server/handlers/middlewares.go
+++ b/server/handlers/middlewares.go
@@ -81,7 +81,7 @@ func (h *Handler) AuthMiddleware(next http.Handler, auth models.AuthenticationMe
// Propagate existing request parameters, if present.
queryParams := req.URL.Query()
if refURLB64 != "" {
- queryParams["ref"] = []string{refURLB64}
+ queryParams["ref"] = []string{refURLB64}
}
providerI := req.Context().Value(models.ProviderCtxKey)
// logrus.Debugf("models.ProviderCtxKey %s", models.ProviderCtxKey)
@@ -102,7 +102,7 @@ func (h *Handler) AuthMiddleware(next http.Handler, auth models.AuthenticationMe
isValid, err := h.validateAuth(provider, req)
// logrus.Debugf("validate auth: %t", isValid)
if !isValid {
- if !errors.Is(models.ErrEmptySession, err) && provider.GetProviderType() == models.RemoteProviderType {
+ if !errors.Is(err, models.ErrEmptySession) && provider.GetProviderType() == models.RemoteProviderType {
provider.HandleUnAuthenticated(w, req)
return
}
diff --git a/server/handlers/pattern_handler_test.go b/server/handlers/pattern_handler_test.go
index c7e780c3c93..4ad874b9c57 100644
--- a/server/handlers/pattern_handler_test.go
+++ b/server/handlers/pattern_handler_test.go
@@ -15,165 +15,165 @@ package handlers
// "github.com/spf13/viper"
// )
-var testPatternFile = `
-name: GuestBook App
-version: 0.0.11
-services:
- frontend-dtrds:
- annotations: {}
- apiVersion: v1
- dependsOn: []
- id: null
- isAnnotation: null
- labels: {}
- model: kubernetes
- name: frontend
- namespace: default
- settings:
- spec:
- ports:
- - port: 80
- protocol: TCP
- - port: 80
- protocol: TCP
- selector:
- app: guestbook
- tier: frontend
- traits:
- meshmap:
- edges:
- - data:
- id: 499a0982-138b-48f0-bfc0-4b2c9f711510
- metadata:
- port: 80
- protocol: TCP
- source: 4ae55da0-82eb-405e-9410-75623cee1043
- subType: Network
- target: 43a7b935-6109-4f5c-84fb-5e3454f9c6d1
- style:
- control-point-distances: null
- control-point-weights: "0.5"
- curve-style: bezier
- haystack-radius: "0"
- line-color: rgb(153,153,153)
- line-style: dotted
- opacity: "1"
- segment-distances: 20px
- segment-weights: "0.5"
- target-arrow-shape: vee
- taxi-direction: auto
- taxi-turn: 50%
- taxi-turn-min-distance: 10px
- width: 1.5px
- fieldRefData: {}
- id: 4ae55da0-82eb-405e-9410-75623cee1043
- label: frontend
- meshmodel-metadata:
- genealogy: ""
- isCustomResource: false
- isNamespaced: true
- logoURL: https://github.com/cncf/artwork/blob/master/projects/kubernetes/icon/white/kubernetes-icon-white.svg
- model: kubernetes
- modelDisplayName: Kubernetes
- primaryColor: '#326CE5'
- published: true
- secondaryColor: '#7aa1f0'
- shape: round-triangle
- styleOverrides:
- background-fit: none
- background-position-y: 4.5
- height: 16
- padding: 12
- width: 17
- z-index: 3
- subCategory: Scheduling & Orchestration
- svgColor: ui/public/static/img/meshmodels/kubernetes/color/apiservice-color.svg
- svgComplete: ""
- svgWhite: ui/public/static/img/meshmodels/kubernetes/white/apiservice-white.svg
- position:
- posX: 710
- posY: 570
- whiteboardData:
- style:
- z-index: 15
- type: Service
- version: ""
- frontend-mzdsv:
- annotations: {}
- apiVersion: apps/v1
- dependsOn: []
- id: null
- isAnnotation: null
- labels: {}
- model: kubernetes
- name: frontend
- namespace: ""
- settings:
- spec:
- replicas: 3
- selector:
- match Labels:
- app: guestbook
- tier: frontend
- template:
- metadata:
- labels:
- app: guestbook
- tier: frontend
- spec:
- containers:
- - env:
- - name: GET_HOSTS_FROM
- value: dns
- image: gcr.io/google_samples/gb-frontend:v5
- name: php-redis
- ports:
- - container Port: 80
- resources:
- requests:
- cpu: 100m
- memory: 100Mi
- traits:
- meshmap:
- edges:
- - data:
- id: 499a0982-138b-48f0-bfc0-4b2c9f711510
- metadata:
- port: 80
- protocol: TCP
- source: 4ae55da0-82eb-405e-9410-75623cee1043
- subType: Network
- target: 43a7b935-6109-4f5c-84fb-5e3454f9c6d1
- style:
- control-point-distances: null
- control-point-weights: "0.5"
- curve-style: bezier
- haystack-radius: "0"
- line-color: rgb(153,153,153)
- line-style: dotted
- opacity: "1"
- segment-distances: 20px
- segment-weights: "0.5"
- target-arrow-shape: vee
- taxi-direction: auto
- taxi-turn: 50%
- taxi-turn-min-distance: 10px
- width: 1.5px
- fieldRefData: {}
- id: 43a7b935-6109-4f5c-84fb-5e3454f9c6d1
- label: frontend
- meshmodel-metadata:
- styleOverrides:
- z-index: 18
- position:
- posX: 710
- posY: 690
- whiteboardData:
- style:
- z-index: 9
- type: Deployment
- version: ""
-`
+// var testPatternFile = `
+// name: GuestBook App
+// version: 0.0.11
+// services:
+// frontend-dtrds:
+// annotations: {}
+// apiVersion: v1
+// dependsOn: []
+// id: null
+// isAnnotation: null
+// labels: {}
+// model: kubernetes
+// name: frontend
+// namespace: default
+// settings:
+// spec:
+// ports:
+// - port: 80
+// protocol: TCP
+// - port: 80
+// protocol: TCP
+// selector:
+// app: guestbook
+// tier: frontend
+// traits:
+// meshmap:
+// edges:
+// - data:
+// id: 499a0982-138b-48f0-bfc0-4b2c9f711510
+// metadata:
+// port: 80
+// protocol: TCP
+// source: 4ae55da0-82eb-405e-9410-75623cee1043
+// subType: Network
+// target: 43a7b935-6109-4f5c-84fb-5e3454f9c6d1
+// style:
+// control-point-distances: null
+// control-point-weights: "0.5"
+// curve-style: bezier
+// haystack-radius: "0"
+// line-color: rgb(153,153,153)
+// line-style: dotted
+// opacity: "1"
+// segment-distances: 20px
+// segment-weights: "0.5"
+// target-arrow-shape: vee
+// taxi-direction: auto
+// taxi-turn: 50%
+// taxi-turn-min-distance: 10px
+// width: 1.5px
+// fieldRefData: {}
+// id: 4ae55da0-82eb-405e-9410-75623cee1043
+// label: frontend
+// meshmodel-metadata:
+// genealogy: ""
+// isCustomResource: false
+// isNamespaced: true
+// logoURL: https://github.com/cncf/artwork/blob/master/projects/kubernetes/icon/white/kubernetes-icon-white.svg
+// model: kubernetes
+// modelDisplayName: Kubernetes
+// primaryColor: '#326CE5'
+// published: true
+// secondaryColor: '#7aa1f0'
+// shape: round-triangle
+// styleOverrides:
+// background-fit: none
+// background-position-y: 4.5
+// height: 16
+// padding: 12
+// width: 17
+// z-index: 3
+// subCategory: Scheduling & Orchestration
+// svgColor: ui/public/static/img/meshmodels/kubernetes/color/apiservice-color.svg
+// svgComplete: ""
+// svgWhite: ui/public/static/img/meshmodels/kubernetes/white/apiservice-white.svg
+// position:
+// posX: 710
+// posY: 570
+// whiteboardData:
+// style:
+// z-index: 15
+// type: Service
+// version: ""
+// frontend-mzdsv:
+// annotations: {}
+// apiVersion: apps/v1
+// dependsOn: []
+// id: null
+// isAnnotation: null
+// labels: {}
+// model: kubernetes
+// name: frontend
+// namespace: ""
+// settings:
+// spec:
+// replicas: 3
+// selector:
+// match Labels:
+// app: guestbook
+// tier: frontend
+// template:
+// metadata:
+// labels:
+// app: guestbook
+// tier: frontend
+// spec:
+// containers:
+// - env:
+// - name: GET_HOSTS_FROM
+// value: dns
+// image: gcr.io/google_samples/gb-frontend:v5
+// name: php-redis
+// ports:
+// - container Port: 80
+// resources:
+// requests:
+// cpu: 100m
+// memory: 100Mi
+// traits:
+// meshmap:
+// edges:
+// - data:
+// id: 499a0982-138b-48f0-bfc0-4b2c9f711510
+// metadata:
+// port: 80
+// protocol: TCP
+// source: 4ae55da0-82eb-405e-9410-75623cee1043
+// subType: Network
+// target: 43a7b935-6109-4f5c-84fb-5e3454f9c6d1
+// style:
+// control-point-distances: null
+// control-point-weights: "0.5"
+// curve-style: bezier
+// haystack-radius: "0"
+// line-color: rgb(153,153,153)
+// line-style: dotted
+// opacity: "1"
+// segment-distances: 20px
+// segment-weights: "0.5"
+// target-arrow-shape: vee
+// taxi-direction: auto
+// taxi-turn: 50%
+// taxi-turn-min-distance: 10px
+// width: 1.5px
+// fieldRefData: {}
+// id: 43a7b935-6109-4f5c-84fb-5e3454f9c6d1
+// label: frontend
+// meshmodel-metadata:
+// styleOverrides:
+// z-index: 18
+// position:
+// posX: 710
+// posY: 690
+// whiteboardData:
+// style:
+// z-index: 9
+// type: Deployment
+// version: ""
+// `
// func TestPatternFileConversionFromV1Alpha1ToV1Beta1(t *testing.T) {
diff --git a/server/handlers/policy_relationship_handler.go b/server/handlers/policy_relationship_handler.go
index d302f475338..31333675ed5 100644
--- a/server/handlers/policy_relationship_handler.go
+++ b/server/handlers/policy_relationship_handler.go
@@ -17,9 +17,7 @@ import (
"github.com/layer5io/meshkit/models/events"
- regv1alpha3 "github.com/layer5io/meshkit/models/meshmodel/registry/v1alpha3"
regv1beta1 "github.com/layer5io/meshkit/models/meshmodel/registry/v1beta1"
- mutils "github.com/layer5io/meshkit/utils"
)
const (
@@ -91,12 +89,12 @@ func (h *Handler) EvaluateRelationshipPolicy(
"evaluated_at": *evaluationResponse.Timestamp,
}).WithSeverity(events.Informational).Build()
_ = provider.PersistEvent(event)
-
+
// Create the event but do not notify the client immediately, as the evaluations are frequent and takes up the view area.
// go h.config.EventBroadcaster.Publish(userUUID, event)
if relationshipPolicyEvalPayload.Options != nil && relationshipPolicyEvalPayload.Options.ReturnDiffOnly != nil &&
- *relationshipPolicyEvalPayload.Options.ReturnDiffOnly {
+ *relationshipPolicyEvalPayload.Options.ReturnDiffOnly {
evaluationResponse.Design.Components = []*component.ComponentDefinition{}
evaluationResponse.Design.Relationships = []*relationship.RelationshipDefinition{}
for _, component := range evaluationResponse.Trace.ComponentsUpdated {
@@ -133,39 +131,41 @@ func (h *Handler) EvaluateRelationshipPolicy(
}
}
-func (h *Handler) verifyEvaluationQueries(evaluationQueries []string) (verifiedEvaluationQueries []string) {
- registeredRelationships, _, _, _ := h.registryManager.GetEntities(®v1alpha3.RelationshipFilter{})
-
- var relationships []relationship.RelationshipDefinition
- for _, entity := range registeredRelationships {
- relationship, err := mutils.Cast[*relationship.RelationshipDefinition](entity)
-
- if err != nil {
- return
- }
- relationships = append(relationships, *relationship)
- }
-
- if len(evaluationQueries) == 0 || (len(evaluationQueries) == 1 && evaluationQueries[0] == "all") {
- for _, relationship := range relationships {
- if relationship.EvaluationQuery != nil {
- verifiedEvaluationQueries = append(verifiedEvaluationQueries, *relationship.EvaluationQuery)
- } else {
- verifiedEvaluationQueries = append(verifiedEvaluationQueries, relationship.GetDefaultEvaluationQuery())
- }
- }
- } else {
- for _, regoQuery := range evaluationQueries {
- for _, relationship := range relationships {
- if (relationship.EvaluationQuery != nil && regoQuery == *relationship.EvaluationQuery) || regoQuery == relationship.GetDefaultEvaluationQuery() {
- verifiedEvaluationQueries = append(verifiedEvaluationQueries, *relationship.EvaluationQuery)
- break
- }
- }
- }
- }
- return
-}
+// unused currently
+
+// func (h *Handler) verifyEvaluationQueries(evaluationQueries []string) (verifiedEvaluationQueries []string) {
+// registeredRelationships, _, _, _ := h.registryManager.GetEntities(®v1alpha3.RelationshipFilter{})
+
+// var relationships []relationship.RelationshipDefinition
+// for _, entity := range registeredRelationships {
+// relationship, err := mutils.Cast[*relationship.RelationshipDefinition](entity)
+
+// if err != nil {
+// return
+// }
+// relationships = append(relationships, *relationship)
+// }
+
+// if len(evaluationQueries) == 0 || (len(evaluationQueries) == 1 && evaluationQueries[0] == "all") {
+// for _, relationship := range relationships {
+// if relationship.EvaluationQuery != nil {
+// verifiedEvaluationQueries = append(verifiedEvaluationQueries, *relationship.EvaluationQuery)
+// } else {
+// verifiedEvaluationQueries = append(verifiedEvaluationQueries, relationship.GetDefaultEvaluationQuery())
+// }
+// }
+// } else {
+// for _, regoQuery := range evaluationQueries {
+// for _, relationship := range relationships {
+// if (relationship.EvaluationQuery != nil && regoQuery == *relationship.EvaluationQuery) || regoQuery == relationship.GetDefaultEvaluationQuery() {
+// verifiedEvaluationQueries = append(verifiedEvaluationQueries, *relationship.EvaluationQuery)
+// break
+// }
+// }
+// }
+// }
+// return
+// }
// swagger:route GET /api/meshmodels/models/{model}/policies/{name} GetMeshmodelPoliciesByName idGetMeshmodelPoliciesByName
// Handle GET request for getting meshmodel policies of a specific model by name.
diff --git a/server/helpers/utils/utils.go b/server/helpers/utils/utils.go
index de76d29752e..04d5c7bfc7f 100644
--- a/server/helpers/utils/utils.go
+++ b/server/helpers/utils/utils.go
@@ -14,7 +14,9 @@ import (
"strings"
"sync"
+ "github.com/layer5io/meshkit/encoding"
"github.com/layer5io/meshkit/utils"
+
"github.com/meshery/schemas/models/v1beta1/component"
"golang.org/x/text/cases"
@@ -362,7 +364,7 @@ func MarshalAndUnmarshal[k any, v any](val k) (unmarshalledvalue v, err error) {
return
}
- err = utils.Unmarshal(data, &unmarshalledvalue)
+ err = encoding.Unmarshal([]byte(data), &unmarshalledvalue)
if err != nil {
return
}
diff --git a/server/internal/graphql/model/control_plane_helper.go b/server/internal/graphql/model/control_plane_helper.go
index b9744c09030..ca72c6056bb 100644
--- a/server/internal/graphql/model/control_plane_helper.go
+++ b/server/internal/graphql/model/control_plane_helper.go
@@ -5,7 +5,8 @@ import (
"strings"
"github.com/layer5io/meshery/server/models"
- "github.com/layer5io/meshkit/utils"
+ "github.com/layer5io/meshkit/encoding"
+
meshsyncmodel "github.com/layer5io/meshsync/pkg/model"
corev1 "k8s.io/api/core/v1"
@@ -38,7 +39,7 @@ func GetControlPlaneState(ctx context.Context, selectors []MeshType, provider mo
}
if meshsyncmodel.IsObject(obj) { //As a fallback extract objectmeta manually, if possible
objspec := corev1.PodSpec{}
- err := utils.Unmarshal(obj.Spec.Attribute, &objspec)
+ err := encoding.Unmarshal([]byte(obj.Spec.Attribute), &objspec)
if err != nil {
return nil, err
}
diff --git a/server/internal/graphql/model/data_plane_helper.go b/server/internal/graphql/model/data_plane_helper.go
index 1fca1b64b58..4017d8bd8b6 100644
--- a/server/internal/graphql/model/data_plane_helper.go
+++ b/server/internal/graphql/model/data_plane_helper.go
@@ -6,7 +6,8 @@ import (
"strings"
"github.com/layer5io/meshery/server/models"
- "github.com/layer5io/meshkit/utils"
+ "github.com/layer5io/meshkit/encoding"
+
meshsyncmodel "github.com/layer5io/meshsync/pkg/model"
corev1 "k8s.io/api/core/v1"
@@ -44,13 +45,13 @@ func GetDataPlaneState(ctx context.Context, selectors []MeshType, provider model
objstatus := corev1.PodStatus{}
// unmarshal resource_specs
- err := utils.Unmarshal(obj.Spec.Attribute, &objspec)
+ err := encoding.Unmarshal([]byte(obj.Spec.Attribute), &objspec)
if err != nil {
return nil, err
}
// unmarshal resource_statuses
- err = utils.Unmarshal(obj.Status.Attribute, &objstatus)
+ err = encoding.Unmarshal([]byte(obj.Status.Attribute), &objstatus)
if err != nil {
return nil, err
}
diff --git a/server/machines/helpers/auto_register.go b/server/machines/helpers/auto_register.go
index 7b2390b378d..33c03018313 100644
--- a/server/machines/helpers/auto_register.go
+++ b/server/machines/helpers/auto_register.go
@@ -13,11 +13,13 @@ import (
"github.com/layer5io/meshery/server/machines"
"github.com/layer5io/meshery/server/models"
"github.com/layer5io/meshkit/database"
+ "github.com/layer5io/meshkit/encoding"
"github.com/layer5io/meshkit/logger"
"github.com/layer5io/meshkit/models/events"
- "github.com/meshery/schemas/models/v1beta1/component"
regv1beta1 "github.com/layer5io/meshkit/models/meshmodel/registry/v1beta1"
"github.com/layer5io/meshkit/utils"
+ "github.com/meshery/schemas/models/v1beta1/component"
+
meshsyncmodel "github.com/layer5io/meshsync/pkg/model"
"github.com/spf13/viper"
)
@@ -87,7 +89,7 @@ func (arh *AutoRegistrationHelper) processRegistration() {
continue
}
var capabilities map[string]interface{}
- err = utils.Unmarshal(connCapabilities, &capabilities)
+ err = encoding.Unmarshal([]byte(connCapabilities), &capabilities)
if err != nil {
arh.log.Error(models.ErrUnmarshal(err, fmt.Sprintf("Connection Definition \"%s\" capabilities", connectionDef.Component.Kind)))
continue
diff --git a/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseInstallation.json b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseInstallation.json
new file mode 100644
index 00000000000..c2486804c63
--- /dev/null
+++ b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseInstallation.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ClickHouseInstallation",
+ "schema": "{\n \"description\": \"define a set of Kubernetes resources (StatefulSet, PVC, Service, ConfigMap) which describe behavior one or more ClickHouse clusters\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of the desired behavior of one or more ClickHouse clusters\\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md\\n\",\n \"properties\": {\n \"configuration\": {\n \"description\": \"allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource\",\n \"properties\": {\n \"clusters\": {\n \"description\": \"describes ClickHouse clusters layout and allows change settings on cluster-level, shard-level and replica-level\\nevery cluster is a set of StatefulSet, one StatefulSet contains only one Pod with `clickhouse-server`\\nall Pods will rendered in \\u003cremote_server\\u003e part of ClickHouse configs, mounted from ConfigMap as `/etc/clickhouse-server/config.d/chop-generated-remote_servers.xml`\\nClusters will use for Distributed table engine, more details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\\nIf `cluster` contains zookeeper settings (could be inherited from top `chi` level), when you can create *ReplicatedMergeTree tables\\n\",\n \"items\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` on current cluster during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files`\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"insecure\": {\n \"description\": \"optional, open insecure ports for cluster, defaults to \\\"yes\\\"\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"layout\": {\n \"description\": \"describe current cluster layout, how much shards in cluster, how much replica in shard\\nallows override settings on each shard and replica separatelly\\n\",\n \"properties\": {\n \"replicas\": {\n \"description\": \"optional, allows override top-level `chi.spec.configuration` and cluster-level `chi.spec.configuration.clusters` configuration for each replica and each shard relates to selected replica, use it only if you fully understand what you do\",\n \"items\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"optional, by default replica name is generated, but you can override it and setup custom name\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and will ignore if shard-level `chi.spec.configuration.clusters.layout.shards` present\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"shards\": {\n \"description\": \"optional, list of shards related to current replica, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\",\n \"items\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` only in one shard related to current replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"httpPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `http` for selected shard, override `chi.spec.templates.hostTemplates.spec.httpPort`\\nallows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"httpsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"insecure\": {\n \"description\": \"optional, open insecure ports for cluster, defaults to \\\"yes\\\"\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"interserverHTTPPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `interserver` for selected shard, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`\\nallows connect between replicas inside same shard during fetch replicated data parts HTTP protocol\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"optional, by default shard name is generated, but you can override it and setup custom name\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"optional, open secure ports\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in `Pod` only in one shard related to current replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and replica-level `chi.spec.configuration.clusters.layout.replicas.settings`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"tcpPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `tcp` for selected shard, override `chi.spec.templates.hostTemplates.spec.tcpPort`\\nallows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"shardsCount\": {\n \"description\": \"optional, count of shards related to current replica, you can override each shard behavior on low-level `chi.spec.configuration.clusters.layout.replicas.shards`\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"replicasCount\": {\n \"description\": \"how much replicas in each shards for current ClickHouse cluster will run in Kubernetes, each replica is a separate `StatefulSet` which contains only one `Pod` with `clickhouse-server` instance, every shard contains 1 replica by default\",\n \"type\": \"integer\"\n },\n \"shards\": {\n \"description\": \"optional, allows override top-level `chi.spec.configuration`, cluster-level `chi.spec.configuration.clusters` settings for each shard separately, use it only if you fully understand what you do\",\n \"items\": {\n \"properties\": {\n \"definitionType\": {\n \"description\": \"DEPRECATED - to be removed soon\",\n \"type\": \"string\"\n },\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` only in one shard during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"internalReplication\": {\n \"description\": \"optional, `true` by default when `chi.spec.configuration.clusters[].layout.ReplicaCount` \\u003e 1 and 0 otherwise\\nallows setup \\u003cinternal_replication\\u003e setting which will use during insert into tables with `Distributed` engine for insert only in one live replica and other replicas will download inserted data during replication,\\nwill apply in \\u003cremote_servers\\u003e inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml\\nMore details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"optional, by default shard name is generated, but you can override it and setup custom name\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"description\": \"optional, allows override behavior for selected replicas from cluster-level `chi.spec.configuration.clusters` and shard-level `chi.spec.configuration.clusters.layout.shards`\\n\",\n \"items\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files`, cluster-level `chi.spec.configuration.clusters.files` and shard-level `chi.spec.configuration.clusters.layout.shards.files`\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"httpPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `http` for selected replica, override `chi.spec.templates.hostTemplates.spec.httpPort`\\nallows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"httpsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"insecure\": {\n \"description\": \"optional, open insecure ports for cluster, defaults to \\\"yes\\\"\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"interserverHTTPPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `interserver` for selected replica, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`\\nallows connect between replicas inside same shard during fetch replicated data parts HTTP protocol\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"optional, by default replica name is generated, but you can override it and setup custom name\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"optional, open secure ports\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and shard-level `chi.spec.configuration.clusters.layout.shards.settings`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"tcpPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `tcp` for selected replica, override `chi.spec.templates.hostTemplates.spec.tcpPort`\\nallows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates` and shard-level `chi.spec.configuration.clusters.layout.shards.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"replicasCount\": {\n \"description\": \"optional, how much replicas in selected shard for selected ClickHouse cluster will run in Kubernetes, each replica is a separate `StatefulSet` which contains only one `Pod` with `clickhouse-server` instance,\\nshard contains 1 replica by default\\noverride cluster-level `chi.spec.configuration.clusters.layout.replicasCount`\\n\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in each `Pod` only in one shard during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\\noverride top-level `chi.spec.configuration.settings` and cluster-level `chi.spec.configuration.clusters.settings`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected shard\\noverride top-level `chi.spec.configuration.templates` and cluster-level `chi.spec.configuration.clusters.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"optional, 1 by default, allows setup shard \\u003cweight\\u003e setting which will use during insert into tables with `Distributed` engine,\\nwill apply in \\u003cremote_servers\\u003e inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml\\nMore details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\\n\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"shardsCount\": {\n \"description\": \"how much shards for current ClickHouse cluster will run in Kubernetes, each shard contains shared-nothing part of data and contains set of replicas, cluster contains 1 shard by default\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"description\": \"DEPRECATED - to be removed soon\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"cluster name, used to identify set of ClickHouse servers and wide used during generate names of related Kubernetes resources\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"schemaPolicy\": {\n \"description\": \"describes how schema is propagated within replicas and shards\\n\",\n \"properties\": {\n \"replica\": {\n \"description\": \"how schema is propagated within a replica\",\n \"enum\": [\n \"\",\n \"None\",\n \"All\"\n ],\n \"type\": \"string\"\n },\n \"shard\": {\n \"description\": \"how schema is propagated between shards\",\n \"enum\": [\n \"\",\n \"None\",\n \"All\",\n \"DistributedTablesOnly\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"optional, shared secret value to secure cluster communications\",\n \"properties\": {\n \"auto\": {\n \"description\": \"Auto-generate shared secret value to secure cluster communications\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Cluster shared secret value in plain text\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Cluster shared secret source\",\n \"properties\": {\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the clickhouse installation namespace.\\nShould not be used if value is not empty.\\n\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info:\\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\n\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"name\",\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secure\": {\n \"description\": \"optional, open secure ports for cluster\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in each `Pod` only in one cluster during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\\noverride top-level `chi.spec.configuration.settings`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected cluster\\noverride top-level `chi.spec.configuration.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"zookeeper\": {\n \"description\": \"optional, allows configure \\u003cyandex\\u003e\\u003czookeeper\\u003e..\\u003c/zookeeper\\u003e\\u003c/yandex\\u003e section in each `Pod` only in current ClickHouse cluster, during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`\\noverride top-level `chi.spec.configuration.zookeeper` settings\\n\",\n \"properties\": {\n \"identity\": {\n \"description\": \"optional access credentials string with `user:password` format used when use digest authorization in Zookeeper\",\n \"type\": \"string\"\n },\n \"nodes\": {\n \"description\": \"describe every available zookeeper cluster node for interaction\",\n \"items\": {\n \"properties\": {\n \"host\": {\n \"description\": \"dns name or ip address for Zookeeper node\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"TCP port which used to connect to Zookeeper node\",\n \"maximum\": 65535,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"secure\": {\n \"description\": \"if a secure connection to Zookeeper is required\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"operation_timeout_ms\": {\n \"description\": \"one operation timeout during Zookeeper transactions\",\n \"type\": \"integer\"\n },\n \"root\": {\n \"description\": \"optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)\",\n \"type\": \"string\"\n },\n \"session_timeout_ms\": {\n \"description\": \"session timeout during connect to Zookeeper\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"files\": {\n \"description\": \"allows define content of any setting file inside each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\nevery key in this object is the file name\\nevery value in this object is the file content\\nyou can use `!!binary |` and base64 for binary files, see details here https://yaml.org/type/binary.html\\neach key could contains prefix like USERS, COMMON, HOST or config.d, users.d, cond.d, wrong prefixes will ignored, subfolders also will ignored\\nMore details: https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-05-files-nested.yaml\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"profiles\": {\n \"description\": \"allows configure \\u003cyandex\\u003e\\u003cprofiles\\u003e..\\u003c/profiles\\u003e\\u003c/yandex\\u003e section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\\nyou can configure any aspect of settings profile\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings-profiles/\\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationprofiles\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"quotas\": {\n \"description\": \"allows configure \\u003cyandex\\u003e\\u003cquotas\\u003e..\\u003c/quotas\\u003e\\u003c/yandex\\u003e section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\\nyou can configure any aspect of resource quotas\\nMore details: https://clickhouse.tech/docs/en/operations/quotas/\\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationquotas\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationsettings\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"users\": {\n \"description\": \"allows configure \\u003cyandex\\u003e\\u003cusers\\u003e..\\u003c/users\\u003e\\u003c/yandex\\u003e section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\\nyou can configure password hashed, authorization restrictions, database level security row filters etc.\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings-users/\\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationusers\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"zookeeper\": {\n \"description\": \"allows configure \\u003cyandex\\u003e\\u003czookeeper\\u003e..\\u003c/zookeeper\\u003e\\u003c/yandex\\u003e section in each `Pod` during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`\\n`clickhouse-operator` itself doesn't manage Zookeeper, please install Zookeeper separatelly look examples on https://github.com/Altinity/clickhouse-operator/tree/master/deploy/zookeeper/\\ncurrently, zookeeper (or clickhouse-keeper replacement) used for *ReplicatedMergeTree table engines and for `distributed_ddl`\\nMore details: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper\\n\",\n \"properties\": {\n \"identity\": {\n \"description\": \"optional access credentials string with `user:password` format used when use digest authorization in Zookeeper\",\n \"type\": \"string\"\n },\n \"nodes\": {\n \"description\": \"describe every available zookeeper cluster node for interaction\",\n \"items\": {\n \"properties\": {\n \"host\": {\n \"description\": \"dns name or ip address for Zookeeper node\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"TCP port which used to connect to Zookeeper node\",\n \"maximum\": 65535,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"secure\": {\n \"description\": \"if a secure connection to Zookeeper is required\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"operation_timeout_ms\": {\n \"description\": \"one operation timeout during Zookeeper transactions\",\n \"type\": \"integer\"\n },\n \"root\": {\n \"description\": \"optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)\",\n \"type\": \"string\"\n },\n \"session_timeout_ms\": {\n \"description\": \"session timeout during connect to Zookeeper\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"defaults\": {\n \"description\": \"define default behavior for whole ClickHouseInstallation, some behavior can be re-define on cluster, shard and replica level\\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specdefaults\\n\",\n \"properties\": {\n \"distributedDDL\": {\n \"description\": \"allows change `\\u003cyandex\\u003e\\u003cdistributed_ddl\\u003e\\u003c/distributed_ddl\\u003e\\u003c/yandex\\u003e` settings\\nMore info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings-distributed_ddl\\n\",\n \"properties\": {\n \"profile\": {\n \"description\": \"Settings from this profile will be used to execute DDL queries\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"replicasUseFQDN\": {\n \"description\": \"define should replicas be specified by FQDN in `\\u003chost\\u003e\\u003c/host\\u003e`.\\nIn case of \\\"no\\\" will use short hostname and clickhouse-server will use kubernetes default suffixes for DNS lookup\\n\\\"yes\\\" by default\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"storageManagement\": {\n \"description\": \"default storage management options\",\n \"properties\": {\n \"provisioner\": {\n \"description\": \"defines `PVC` provisioner - be it StatefulSet or the Operator\",\n \"enum\": [\n \"\",\n \"StatefulSet\",\n \"Operator\"\n ],\n \"type\": \"string\"\n },\n \"reclaimPolicy\": {\n \"description\": \"defines behavior of `PVC` deletion.\\n`Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet\\n\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to one or more ClickHouse clusters described in current ClickHouseInstallation (chi) resource\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceDomainPattern\": {\n \"description\": \"Custom domain pattern which will be used for DNS names of `Service` or `Pod`.\\nTypical use scenario - custom cluster domain in Kubernetes cluster\\nExample: %s.svc.my.test\\n\",\n \"type\": \"string\"\n },\n \"reconciling\": {\n \"description\": \"Optional, allows tuning reconciling cycle for ClickhouseInstallation from clickhouse-operator side\",\n \"properties\": {\n \"cleanup\": {\n \"description\": \"Optional, defines behavior for cleanup Kubernetes resources during reconcile cycle\",\n \"properties\": {\n \"reconcileFailedObjects\": {\n \"description\": \"Describes what clickhouse-operator should do with Kubernetes resources which are failed during reconcile.\\nDefault behavior is `Retain`\\\"\\n\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"Behavior policy for failed ConfigMap, `Retain` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"pvc\": {\n \"description\": \"Behavior policy for failed PVC, `Retain` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Behavior policy for failed Service, `Retain` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"statefulSet\": {\n \"description\": \"Behavior policy for failed StatefulSet, `Retain` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"unknownObjects\": {\n \"description\": \"Describes what clickhouse-operator should do with found Kubernetes resources which should be managed by clickhouse-operator,\\nbut do not have `ownerReference` to any currently managed `ClickHouseInstallation` resource.\\nDefault behavior is `Delete`\\\"\\n\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"Behavior policy for unknown ConfigMap, `Delete` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"pvc\": {\n \"description\": \"Behavior policy for unknown PVC, `Delete` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Behavior policy for unknown Service, `Delete` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"statefulSet\": {\n \"description\": \"Behavior policy for unknown StatefulSet, `Delete` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"configMapPropagationTimeout\": {\n \"description\": \"Timeout in seconds for `clickhouse-operator` to wait for modified `ConfigMap` to propagate into the `Pod`\\nMore details: https://kubernetes.io/docs/concepts/configuration/configmap/#mounted-configmaps-are-updated-automatically\\n\",\n \"maximum\": 3600,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"policy\": {\n \"description\": \"DISCUSSED TO BE DEPRECATED\\nSyntax sugar\\nOverrides all three 'reconcile.host.wait.{exclude, queries, include}' values from the operator's config\\nPossible values:\\n - wait - should wait to exclude host, complete queries and include host back into the cluster\\n - nowait - should NOT wait to exclude host, complete queries and include host back into the cluster\\n\",\n \"enum\": [\n \"\",\n \"wait\",\n \"nowait\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"restart\": {\n \"description\": \"In case 'RollingUpdate' specified, the operator will always restart ClickHouse pods during reconcile.\\nThis options is used in rare cases when force restart is required and is typically removed after the use in order to avoid unneeded restarts.\\n\",\n \"enum\": [\n \"\",\n \"RollingUpdate\"\n ],\n \"type\": \"string\"\n },\n \"stop\": {\n \"description\": \"Allows to stop all ClickHouse clusters defined in a CHI.\\nWorks as the following:\\n - When `stop` is `1` operator sets `Replicas: 0` in each StatefulSet. Thie leads to having all `Pods` and `Service` deleted. All PVCs are kept intact.\\n - When `stop` is `0` operator sets `Replicas: 1` and `Pod`s and `Service`s will created again and all retained PVCs will be attached to `Pod`s.\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"taskID\": {\n \"description\": \"Allows to define custom taskID for CHI update and watch status of this update execution.\\nDisplayed in all .status.taskID* fields.\\nBy default (if not filled) every update of CHI manifest will generate random taskID\\n\",\n \"type\": \"string\"\n },\n \"templates\": {\n \"description\": \"allows define templates which will use for render Kubernetes resources like StatefulSet, ConfigMap, Service, PVC, by default, clickhouse-operator have own templates, but you can override it\",\n \"properties\": {\n \"hostTemplates\": {\n \"description\": \"hostTemplate will use during apply to generate `clickhose-server` config files\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"template name, could use to link inside top-level `chi.spec.defaults.templates.hostTemplate`, cluster-level `chi.spec.configuration.clusters.templates.hostTemplate`, shard-level `chi.spec.configuration.clusters.layout.shards.temlates.hostTemplate`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates.hostTemplate`\",\n \"type\": \"string\"\n },\n \"portDistribution\": {\n \"description\": \"define how will distribute numeric values of named ports in `Pod.spec.containers.ports` and clickhouse-server configs\",\n \"items\": {\n \"properties\": {\n \"type\": {\n \"description\": \"type of distribution, when `Unspecified` (default value) then all listen ports on clickhouse-server configuration in all Pods will have the same value, when `ClusterScopeIndex` then ports will increment to offset from base value depends on shard and replica index inside cluster with combination of `chi.spec.templates.podTemlates.spec.HostNetwork` it allows setup ClickHouse cluster inside Kubernetes and provide access via external network bypass Kubernetes internal network\",\n \"enum\": [\n \"\",\n \"Unspecified\",\n \"ClusterScopeIndex\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"spec\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` where this template will apply during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"httpPort\": {\n \"description\": \"optional, setup `http_port` inside `clickhouse-server` settings for each Pod where current template will apply\\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=http]`\\nMore info: https://clickhouse.tech/docs/en/interfaces/http/\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"httpsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"insecure\": {\n \"description\": \"optional, open insecure ports for cluster, defaults to \\\"yes\\\"\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"interserverHTTPPort\": {\n \"description\": \"optional, setup `interserver_http_port` inside `clickhouse-server` settings for each Pod where current template will apply\\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=interserver]`\\nMore info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#interserver-http-port\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"by default, hostname will generate, but this allows define custom name for each `clickhuse-server`\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"optional, open secure ports\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in each `Pod` where this template will apply during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"tcpPort\": {\n \"description\": \"optional, setup `tcp_port` inside `clickhouse-server` settings for each Pod where current template will apply\\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=tcp]`\\nMore info: https://clickhouse.tech/docs/en/interfaces/tcp/\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"templates\": {\n \"description\": \"be careful, this part of CRD allows override template inside template, don't use it if you don't understand what you do\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"podTemplates\": {\n \"description\": \"podTemplate will use during render `Pod` inside `StatefulSet.spec` and allows define rendered `Pod.spec`, pod scheduling distribution and pod zone\\nMore information: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatespodtemplates\\n\",\n \"items\": {\n \"properties\": {\n \"distribution\": {\n \"description\": \"DEPRECATED, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`\",\n \"enum\": [\n \"\",\n \"Unspecified\",\n \"OnePerHost\"\n ],\n \"type\": \"string\"\n },\n \"generateName\": {\n \"description\": \"allows define format for generated `Pod` name, look to https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatesservicetemplates for details about aviailable template variables\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"allows pass standard object's metadata from template to Pod\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"template name, could use to link inside top-level `chi.spec.defaults.templates.podTemplate`, cluster-level `chi.spec.configuration.clusters.templates.podTemplate`, shard-level `chi.spec.configuration.clusters.layout.shards.temlates.podTemplate`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates.podTemplate`\",\n \"type\": \"string\"\n },\n \"podDistribution\": {\n \"description\": \"define ClickHouse Pod distribution policy between Kubernetes Nodes inside Shard, Replica, Namespace, CHI, another ClickHouse cluster\",\n \"items\": {\n \"properties\": {\n \"number\": {\n \"description\": \"define, how much ClickHouse Pods could be inside selected scope with selected distribution type\",\n \"maximum\": 65535,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"scope\": {\n \"description\": \"scope for apply each podDistribution\",\n \"enum\": [\n \"\",\n \"Unspecified\",\n \"Shard\",\n \"Replica\",\n \"Cluster\",\n \"ClickHouseInstallation\",\n \"Namespace\"\n ],\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"use for inter-pod affinity look to `pod.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey`, More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"you can define multiple affinity policy types\",\n \"enum\": [\n \"\",\n \"Unspecified\",\n \"ClickHouseAntiAffinity\",\n \"ShardAntiAffinity\",\n \"ReplicaAntiAffinity\",\n \"AnotherNamespaceAntiAffinity\",\n \"AnotherClickHouseInstallationAntiAffinity\",\n \"AnotherClusterAntiAffinity\",\n \"MaxNumberPerNode\",\n \"NamespaceAffinity\",\n \"ClickHouseInstallationAffinity\",\n \"ClusterAffinity\",\n \"ShardAffinity\",\n \"ReplicaAffinity\",\n \"PreviousTailAffinity\",\n \"CircularReplication\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"spec\": {\n \"description\": \"allows define whole Pod.spec inside StaefulSet.spec, look to https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates for details\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"zone\": {\n \"description\": \"allows define custom zone name and will separate ClickHouse `Pods` between nodes, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`\",\n \"properties\": {\n \"key\": {\n \"description\": \"optional, if defined, allows select kubernetes nodes by label with `name` equal `key`\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"optional, if defined, allows select kubernetes nodes by label with `value` in `values`\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceTemplates\": {\n \"description\": \"allows define template for rendering `Service` which would get endpoint from Pods which scoped chi-wide, cluster-wide, shard-wide, replica-wide level\\n\",\n \"items\": {\n \"properties\": {\n \"generateName\": {\n \"description\": \"allows define format for generated `Service` name, look to https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatesservicetemplates for details about aviailable template variables\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"allows pass standard object's metadata from template to Service\\nCould be use for define specificly for Cloud Provider metadata which impact to behavior of service\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"template name, could use to link inside\\nchi-level `chi.spec.defaults.templates.serviceTemplate`\\ncluster-level `chi.spec.configuration.clusters.templates.clusterServiceTemplate`\\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.shardServiceTemplate`\\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.replicaServiceTemplate` or `chi.spec.configuration.clusters.layout.shards.replicas.replicaServiceTemplate`\\n\",\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"describe behavior of generated Service\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeClaimTemplates\": {\n \"description\": \"allows define template for rendering `PVC` kubernetes resource, which would use inside `Pod` for mount clickhouse `data`, clickhouse `logs` or something else\",\n \"items\": {\n \"properties\": {\n \"metadata\": {\n \"description\": \"allows to pass standard object's metadata from template to PVC\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"template name, could use to link inside\\ntop-level `chi.spec.defaults.templates.dataVolumeClaimTemplate` or `chi.spec.defaults.templates.logVolumeClaimTemplate`,\\ncluster-level `chi.spec.configuration.clusters.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.templates.logVolumeClaimTemplate`,\\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.shards.temlates.logVolumeClaimTemplate`\\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.replicas.templates.logVolumeClaimTemplate`\\n\",\n \"type\": \"string\"\n },\n \"provisioner\": {\n \"description\": \"defines `PVC` provisioner - be it StatefulSet or the Operator\",\n \"enum\": [\n \"\",\n \"StatefulSet\",\n \"Operator\"\n ],\n \"type\": \"string\"\n },\n \"reclaimPolicy\": {\n \"description\": \"defines behavior of `PVC` deletion.\\n`Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet\\n\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"allows define all aspects of `PVC` resource\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"templating\": {\n \"description\": \"Optional, applicable inside ClickHouseInstallationTemplate only.\\nDefines current ClickHouseInstallationTemplate application options to target ClickHouseInstallation(s).\\\"\\n\",\n \"properties\": {\n \"chiSelector\": {\n \"description\": \"Optional, defines selector for ClickHouseInstallation(s) to be templated with ClickhouseInstallationTemplate\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"policy\": {\n \"description\": \"When defined as `auto` inside ClickhouseInstallationTemplate, this ClickhouseInstallationTemplate\\nwill be auto-added into ClickHouseInstallation, selectable by `chiSelector`.\\nDefault value is `manual`, meaning ClickHouseInstallation should request this ClickhouseInstallationTemplate explicitly.\\n\",\n \"enum\": [\n \"\",\n \"auto\",\n \"manual\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"troubleshoot\": {\n \"description\": \"Allows to troubleshoot Pods during CrashLoopBack state.\\nThis may happen when wrong configuration applied, in this case `clickhouse-server` wouldn't start.\\nCommand within ClickHouse container is modified with `sleep` in order to avoid quick restarts\\nand give time to troubleshoot via CLI.\\nLiveness and Readiness probes are disabled as well.\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"useTemplates\": {\n \"description\": \"list of `ClickHouseInstallationTemplate` (chit) resource names which will merge with current `Chi` manifest during render Kubernetes resources to create related ClickHouse clusters\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"name of `ClickHouseInstallationTemplate` (chit) resource\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Kubernetes namespace where need search `chit` resource, depending on `watchNamespaces` settings in `clichouse-operator`\",\n \"type\": \"string\"\n },\n \"useType\": {\n \"description\": \"optional, current strategy is only merge, and current `chi` settings have more priority than merged template `chit`\",\n \"enum\": [\n \"\",\n \"merge\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Click House Installation\",\n \"type\": \"object\"\n}",
+ "version": "clickhouse.altinity.com/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Click House Installation",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/Altinity/clickhouse-operator/master/deploy/helm/clickhouse-operator/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Database"
+ },
+ "displayName": "ClickHouse",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcc00",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/Altinity/clickhouse-operator/master/deploy/helm/clickhouse-operator/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 0 9 8\" width=\"20\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 7h1v1h-1z\" fill=\"#f00\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 0h1v7h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 3.25h1v1.5h-1z\" fill=\"#fc0\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 2500 2222\" style=\"enable-background:new 0 0 2500 2222;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{opacity:0.8;fill:#FFFFFF;}\n\u0026#x9;.st1{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M0.1,1944.2h277.8V2222H0.1V1944.2z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M0.1,0h277.8v1944.2H0.1V0z M555.6,0h277.8v2222H555.6V0z M1111.1,0h277.8v2222h-277.8V0z M1666.6,0h277.8v2222\u0026#xA;\u0026#x9;h-277.8V0z M2222.1,902.7h277.8v416.6h-277.8V902.7z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "release-0.23.7"
+ },
+ "name": "clickhouse",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "App Definition and Development",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#ffcc00",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg height=\"2222\" viewBox=\"0 0 9 8\" width=\"2500\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"m0 7h1v1h-1z\" fill=\"#f00\"/\u003e\u003cpath d=\"m0 0h1v7h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 3.25h1v1.5h-1z\" fill=\"#fc0\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 2500 2222\" style=\"enable-background:new 0 0 2500 2222;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{opacity:0.8;fill:#FFFFFF;}\n\t.st1{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M0.1,1944.2h277.8V2222H0.1V1944.2z\"/\u003e\n\u003cpath class=\"st1\" d=\"M0.1,0h277.8v1944.2H0.1V0z M555.6,0h277.8v2222H555.6V0z M1111.1,0h277.8v2222h-277.8V0z M1666.6,0h277.8v2222\n\th-277.8V0z M2222.1,902.7h277.8v416.6h-277.8V902.7z\"/\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseInstallationTemplate.json b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseInstallationTemplate.json
new file mode 100644
index 00000000000..84e3adcda99
--- /dev/null
+++ b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseInstallationTemplate.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ClickHouseInstallationTemplate",
+ "schema": "{\n \"description\": \"define a set of Kubernetes resources (StatefulSet, PVC, Service, ConfigMap) which describe behavior one or more ClickHouse clusters\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of the desired behavior of one or more ClickHouse clusters\\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md\\n\",\n \"properties\": {\n \"configuration\": {\n \"description\": \"allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource\",\n \"properties\": {\n \"clusters\": {\n \"description\": \"describes ClickHouse clusters layout and allows change settings on cluster-level, shard-level and replica-level\\nevery cluster is a set of StatefulSet, one StatefulSet contains only one Pod with `clickhouse-server`\\nall Pods will rendered in \\u003cremote_server\\u003e part of ClickHouse configs, mounted from ConfigMap as `/etc/clickhouse-server/config.d/chop-generated-remote_servers.xml`\\nClusters will use for Distributed table engine, more details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\\nIf `cluster` contains zookeeper settings (could be inherited from top `chi` level), when you can create *ReplicatedMergeTree tables\\n\",\n \"items\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` on current cluster during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files`\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"insecure\": {\n \"description\": \"optional, open insecure ports for cluster, defaults to \\\"yes\\\"\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"layout\": {\n \"description\": \"describe current cluster layout, how much shards in cluster, how much replica in shard\\nallows override settings on each shard and replica separatelly\\n\",\n \"properties\": {\n \"replicas\": {\n \"description\": \"optional, allows override top-level `chi.spec.configuration` and cluster-level `chi.spec.configuration.clusters` configuration for each replica and each shard relates to selected replica, use it only if you fully understand what you do\",\n \"items\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"optional, by default replica name is generated, but you can override it and setup custom name\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and will ignore if shard-level `chi.spec.configuration.clusters.layout.shards` present\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"shards\": {\n \"description\": \"optional, list of shards related to current replica, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\",\n \"items\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` only in one shard related to current replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`, will ignore if `chi.spec.configuration.clusters.layout.shards` presents\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"httpPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `http` for selected shard, override `chi.spec.templates.hostTemplates.spec.httpPort`\\nallows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"httpsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"insecure\": {\n \"description\": \"optional, open insecure ports for cluster, defaults to \\\"yes\\\"\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"interserverHTTPPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `interserver` for selected shard, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`\\nallows connect between replicas inside same shard during fetch replicated data parts HTTP protocol\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"optional, by default shard name is generated, but you can override it and setup custom name\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"optional, open secure ports\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in `Pod` only in one shard related to current replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and replica-level `chi.spec.configuration.clusters.layout.replicas.settings`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"tcpPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `tcp` for selected shard, override `chi.spec.templates.hostTemplates.spec.tcpPort`\\nallows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"shardsCount\": {\n \"description\": \"optional, count of shards related to current replica, you can override each shard behavior on low-level `chi.spec.configuration.clusters.layout.replicas.shards`\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"replicasCount\": {\n \"description\": \"how much replicas in each shards for current ClickHouse cluster will run in Kubernetes, each replica is a separate `StatefulSet` which contains only one `Pod` with `clickhouse-server` instance, every shard contains 1 replica by default\",\n \"type\": \"integer\"\n },\n \"shards\": {\n \"description\": \"optional, allows override top-level `chi.spec.configuration`, cluster-level `chi.spec.configuration.clusters` settings for each shard separately, use it only if you fully understand what you do\",\n \"items\": {\n \"properties\": {\n \"definitionType\": {\n \"description\": \"DEPRECATED - to be removed soon\",\n \"type\": \"string\"\n },\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` only in one shard during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files` and cluster-level `chi.spec.configuration.clusters.files`\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"internalReplication\": {\n \"description\": \"optional, `true` by default when `chi.spec.configuration.clusters[].layout.ReplicaCount` \\u003e 1 and 0 otherwise\\nallows setup \\u003cinternal_replication\\u003e setting which will use during insert into tables with `Distributed` engine for insert only in one live replica and other replicas will download inserted data during replication,\\nwill apply in \\u003cremote_servers\\u003e inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml\\nMore details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"optional, by default shard name is generated, but you can override it and setup custom name\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"description\": \"optional, allows override behavior for selected replicas from cluster-level `chi.spec.configuration.clusters` and shard-level `chi.spec.configuration.clusters.layout.shards`\\n\",\n \"items\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\noverride top-level `chi.spec.configuration.files`, cluster-level `chi.spec.configuration.clusters.files` and shard-level `chi.spec.configuration.clusters.layout.shards.files`\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"httpPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `http` for selected replica, override `chi.spec.templates.hostTemplates.spec.httpPort`\\nallows connect to `clickhouse-server` via HTTP protocol via kubernetes `Service`\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"httpsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"insecure\": {\n \"description\": \"optional, open insecure ports for cluster, defaults to \\\"yes\\\"\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"interserverHTTPPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `interserver` for selected replica, override `chi.spec.templates.hostTemplates.spec.interserverHTTPPort`\\nallows connect between replicas inside same shard during fetch replicated data parts HTTP protocol\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"optional, by default replica name is generated, but you can override it and setup custom name\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"optional, open secure ports\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in `Pod` only in one replica during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\\noverride top-level `chi.spec.configuration.settings`, cluster-level `chi.spec.configuration.clusters.settings` and shard-level `chi.spec.configuration.clusters.layout.shards.settings`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"tcpPort\": {\n \"description\": \"optional, setup `Pod.spec.containers.ports` with name `tcp` for selected replica, override `chi.spec.templates.hostTemplates.spec.tcpPort`\\nallows connect to `clickhouse-server` via TCP Native protocol via kubernetes `Service`\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected replica\\noverride top-level `chi.spec.configuration.templates`, cluster-level `chi.spec.configuration.clusters.templates` and shard-level `chi.spec.configuration.clusters.layout.shards.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"replicasCount\": {\n \"description\": \"optional, how much replicas in selected shard for selected ClickHouse cluster will run in Kubernetes, each replica is a separate `StatefulSet` which contains only one `Pod` with `clickhouse-server` instance,\\nshard contains 1 replica by default\\noverride cluster-level `chi.spec.configuration.clusters.layout.replicasCount`\\n\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in each `Pod` only in one shard during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\\noverride top-level `chi.spec.configuration.settings` and cluster-level `chi.spec.configuration.clusters.settings`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected shard\\noverride top-level `chi.spec.configuration.templates` and cluster-level `chi.spec.configuration.clusters.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"optional, 1 by default, allows setup shard \\u003cweight\\u003e setting which will use during insert into tables with `Distributed` engine,\\nwill apply in \\u003cremote_servers\\u003e inside ConfigMap which will mount in /etc/clickhouse-server/config.d/chop-generated-remote_servers.xml\\nMore details: https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/\\n\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"shardsCount\": {\n \"description\": \"how much shards for current ClickHouse cluster will run in Kubernetes, each shard contains shared-nothing part of data and contains set of replicas, cluster contains 1 shard by default\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"description\": \"DEPRECATED - to be removed soon\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"cluster name, used to identify set of ClickHouse servers and wide used during generate names of related Kubernetes resources\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"schemaPolicy\": {\n \"description\": \"describes how schema is propagated within replicas and shards\\n\",\n \"properties\": {\n \"replica\": {\n \"description\": \"how schema is propagated within a replica\",\n \"enum\": [\n \"\",\n \"None\",\n \"All\"\n ],\n \"type\": \"string\"\n },\n \"shard\": {\n \"description\": \"how schema is propagated between shards\",\n \"enum\": [\n \"\",\n \"None\",\n \"All\",\n \"DistributedTablesOnly\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"optional, shared secret value to secure cluster communications\",\n \"properties\": {\n \"auto\": {\n \"description\": \"Auto-generate shared secret value to secure cluster communications\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Cluster shared secret value in plain text\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Cluster shared secret source\",\n \"properties\": {\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the clickhouse installation namespace.\\nShould not be used if value is not empty.\\n\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info:\\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\n\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"name\",\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secure\": {\n \"description\": \"optional, open secure ports for cluster\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in each `Pod` only in one cluster during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\\noverride top-level `chi.spec.configuration.settings`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to selected cluster\\noverride top-level `chi.spec.configuration.templates`\\n\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"zookeeper\": {\n \"description\": \"optional, allows configure \\u003cyandex\\u003e\\u003czookeeper\\u003e..\\u003c/zookeeper\\u003e\\u003c/yandex\\u003e section in each `Pod` only in current ClickHouse cluster, during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`\\noverride top-level `chi.spec.configuration.zookeeper` settings\\n\",\n \"properties\": {\n \"identity\": {\n \"description\": \"optional access credentials string with `user:password` format used when use digest authorization in Zookeeper\",\n \"type\": \"string\"\n },\n \"nodes\": {\n \"description\": \"describe every available zookeeper cluster node for interaction\",\n \"items\": {\n \"properties\": {\n \"host\": {\n \"description\": \"dns name or ip address for Zookeeper node\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"TCP port which used to connect to Zookeeper node\",\n \"maximum\": 65535,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"secure\": {\n \"description\": \"if a secure connection to Zookeeper is required\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"operation_timeout_ms\": {\n \"description\": \"one operation timeout during Zookeeper transactions\",\n \"type\": \"integer\"\n },\n \"root\": {\n \"description\": \"optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)\",\n \"type\": \"string\"\n },\n \"session_timeout_ms\": {\n \"description\": \"session timeout during connect to Zookeeper\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"files\": {\n \"description\": \"allows define content of any setting file inside each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\nevery key in this object is the file name\\nevery value in this object is the file content\\nyou can use `!!binary |` and base64 for binary files, see details here https://yaml.org/type/binary.html\\neach key could contains prefix like USERS, COMMON, HOST or config.d, users.d, cond.d, wrong prefixes will ignored, subfolders also will ignored\\nMore details: https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/05-settings-05-files-nested.yaml\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"profiles\": {\n \"description\": \"allows configure \\u003cyandex\\u003e\\u003cprofiles\\u003e..\\u003c/profiles\\u003e\\u003c/yandex\\u003e section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\\nyou can configure any aspect of settings profile\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings-profiles/\\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationprofiles\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"quotas\": {\n \"description\": \"allows configure \\u003cyandex\\u003e\\u003cquotas\\u003e..\\u003c/quotas\\u003e\\u003c/yandex\\u003e section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\\nyou can configure any aspect of resource quotas\\nMore details: https://clickhouse.tech/docs/en/operations/quotas/\\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationquotas\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationsettings\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"users\": {\n \"description\": \"allows configure \\u003cyandex\\u003e\\u003cusers\\u003e..\\u003c/users\\u003e\\u003c/yandex\\u003e section in each `Pod` during generate `ConfigMap` which will mount in `/etc/clickhouse-server/users.d/`\\nyou can configure password hashed, authorization restrictions, database level security row filters etc.\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings-users/\\nYour yaml code will convert to XML, see examples https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationusers\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"zookeeper\": {\n \"description\": \"allows configure \\u003cyandex\\u003e\\u003czookeeper\\u003e..\\u003c/zookeeper\\u003e\\u003c/yandex\\u003e section in each `Pod` during generate `ConfigMap` which will mounted in `/etc/clickhouse-server/config.d/`\\n`clickhouse-operator` itself doesn't manage Zookeeper, please install Zookeeper separatelly look examples on https://github.com/Altinity/clickhouse-operator/tree/master/deploy/zookeeper/\\ncurrently, zookeeper (or clickhouse-keeper replacement) used for *ReplicatedMergeTree table engines and for `distributed_ddl`\\nMore details: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper\\n\",\n \"properties\": {\n \"identity\": {\n \"description\": \"optional access credentials string with `user:password` format used when use digest authorization in Zookeeper\",\n \"type\": \"string\"\n },\n \"nodes\": {\n \"description\": \"describe every available zookeeper cluster node for interaction\",\n \"items\": {\n \"properties\": {\n \"host\": {\n \"description\": \"dns name or ip address for Zookeeper node\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"TCP port which used to connect to Zookeeper node\",\n \"maximum\": 65535,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"secure\": {\n \"description\": \"if a secure connection to Zookeeper is required\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"operation_timeout_ms\": {\n \"description\": \"one operation timeout during Zookeeper transactions\",\n \"type\": \"integer\"\n },\n \"root\": {\n \"description\": \"optional root znode path inside zookeeper to store ClickHouse related data (replication queue or distributed DDL)\",\n \"type\": \"string\"\n },\n \"session_timeout_ms\": {\n \"description\": \"session timeout during connect to Zookeeper\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"defaults\": {\n \"description\": \"define default behavior for whole ClickHouseInstallation, some behavior can be re-define on cluster, shard and replica level\\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specdefaults\\n\",\n \"properties\": {\n \"distributedDDL\": {\n \"description\": \"allows change `\\u003cyandex\\u003e\\u003cdistributed_ddl\\u003e\\u003c/distributed_ddl\\u003e\\u003c/yandex\\u003e` settings\\nMore info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings-distributed_ddl\\n\",\n \"properties\": {\n \"profile\": {\n \"description\": \"Settings from this profile will be used to execute DDL queries\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"replicasUseFQDN\": {\n \"description\": \"define should replicas be specified by FQDN in `\\u003chost\\u003e\\u003c/host\\u003e`.\\nIn case of \\\"no\\\" will use short hostname and clickhouse-server will use kubernetes default suffixes for DNS lookup\\n\\\"yes\\\" by default\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"storageManagement\": {\n \"description\": \"default storage management options\",\n \"properties\": {\n \"provisioner\": {\n \"description\": \"defines `PVC` provisioner - be it StatefulSet or the Operator\",\n \"enum\": [\n \"\",\n \"StatefulSet\",\n \"Operator\"\n ],\n \"type\": \"string\"\n },\n \"reclaimPolicy\": {\n \"description\": \"defines behavior of `PVC` deletion.\\n`Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet\\n\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"templates\": {\n \"description\": \"optional, configuration of the templates names which will use for generate Kubernetes resources according to one or more ClickHouse clusters described in current ClickHouseInstallation (chi) resource\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceDomainPattern\": {\n \"description\": \"Custom domain pattern which will be used for DNS names of `Service` or `Pod`.\\nTypical use scenario - custom cluster domain in Kubernetes cluster\\nExample: %s.svc.my.test\\n\",\n \"type\": \"string\"\n },\n \"reconciling\": {\n \"description\": \"Optional, allows tuning reconciling cycle for ClickhouseInstallation from clickhouse-operator side\",\n \"properties\": {\n \"cleanup\": {\n \"description\": \"Optional, defines behavior for cleanup Kubernetes resources during reconcile cycle\",\n \"properties\": {\n \"reconcileFailedObjects\": {\n \"description\": \"Describes what clickhouse-operator should do with Kubernetes resources which are failed during reconcile.\\nDefault behavior is `Retain`\\\"\\n\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"Behavior policy for failed ConfigMap, `Retain` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"pvc\": {\n \"description\": \"Behavior policy for failed PVC, `Retain` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Behavior policy for failed Service, `Retain` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"statefulSet\": {\n \"description\": \"Behavior policy for failed StatefulSet, `Retain` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"unknownObjects\": {\n \"description\": \"Describes what clickhouse-operator should do with found Kubernetes resources which should be managed by clickhouse-operator,\\nbut do not have `ownerReference` to any currently managed `ClickHouseInstallation` resource.\\nDefault behavior is `Delete`\\\"\\n\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"Behavior policy for unknown ConfigMap, `Delete` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"pvc\": {\n \"description\": \"Behavior policy for unknown PVC, `Delete` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Behavior policy for unknown Service, `Delete` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"statefulSet\": {\n \"description\": \"Behavior policy for unknown StatefulSet, `Delete` by default\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"configMapPropagationTimeout\": {\n \"description\": \"Timeout in seconds for `clickhouse-operator` to wait for modified `ConfigMap` to propagate into the `Pod`\\nMore details: https://kubernetes.io/docs/concepts/configuration/configmap/#mounted-configmaps-are-updated-automatically\\n\",\n \"maximum\": 3600,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"policy\": {\n \"description\": \"DISCUSSED TO BE DEPRECATED\\nSyntax sugar\\nOverrides all three 'reconcile.host.wait.{exclude, queries, include}' values from the operator's config\\nPossible values:\\n - wait - should wait to exclude host, complete queries and include host back into the cluster\\n - nowait - should NOT wait to exclude host, complete queries and include host back into the cluster\\n\",\n \"enum\": [\n \"\",\n \"wait\",\n \"nowait\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"restart\": {\n \"description\": \"In case 'RollingUpdate' specified, the operator will always restart ClickHouse pods during reconcile.\\nThis options is used in rare cases when force restart is required and is typically removed after the use in order to avoid unneeded restarts.\\n\",\n \"enum\": [\n \"\",\n \"RollingUpdate\"\n ],\n \"type\": \"string\"\n },\n \"stop\": {\n \"description\": \"Allows to stop all ClickHouse clusters defined in a CHI.\\nWorks as the following:\\n - When `stop` is `1` operator sets `Replicas: 0` in each StatefulSet. Thie leads to having all `Pods` and `Service` deleted. All PVCs are kept intact.\\n - When `stop` is `0` operator sets `Replicas: 1` and `Pod`s and `Service`s will created again and all retained PVCs will be attached to `Pod`s.\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"taskID\": {\n \"description\": \"Allows to define custom taskID for CHI update and watch status of this update execution.\\nDisplayed in all .status.taskID* fields.\\nBy default (if not filled) every update of CHI manifest will generate random taskID\\n\",\n \"type\": \"string\"\n },\n \"templates\": {\n \"description\": \"allows define templates which will use for render Kubernetes resources like StatefulSet, ConfigMap, Service, PVC, by default, clickhouse-operator have own templates, but you can override it\",\n \"properties\": {\n \"hostTemplates\": {\n \"description\": \"hostTemplate will use during apply to generate `clickhose-server` config files\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"template name, could use to link inside top-level `chi.spec.defaults.templates.hostTemplate`, cluster-level `chi.spec.configuration.clusters.templates.hostTemplate`, shard-level `chi.spec.configuration.clusters.layout.shards.temlates.hostTemplate`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates.hostTemplate`\",\n \"type\": \"string\"\n },\n \"portDistribution\": {\n \"description\": \"define how will distribute numeric values of named ports in `Pod.spec.containers.ports` and clickhouse-server configs\",\n \"items\": {\n \"properties\": {\n \"type\": {\n \"description\": \"type of distribution, when `Unspecified` (default value) then all listen ports on clickhouse-server configuration in all Pods will have the same value, when `ClusterScopeIndex` then ports will increment to offset from base value depends on shard and replica index inside cluster with combination of `chi.spec.templates.podTemlates.spec.HostNetwork` it allows setup ClickHouse cluster inside Kubernetes and provide access via external network bypass Kubernetes internal network\",\n \"enum\": [\n \"\",\n \"Unspecified\",\n \"ClusterScopeIndex\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"spec\": {\n \"properties\": {\n \"files\": {\n \"description\": \"optional, allows define content of any setting file inside each `Pod` where this template will apply during generate `ConfigMap` which will mount in `/etc/clickhouse-server/config.d/` or `/etc/clickhouse-server/conf.d/` or `/etc/clickhouse-server/users.d/`\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"httpPort\": {\n \"description\": \"optional, setup `http_port` inside `clickhouse-server` settings for each Pod where current template will apply\\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=http]`\\nMore info: https://clickhouse.tech/docs/en/interfaces/http/\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"httpsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"insecure\": {\n \"description\": \"optional, open insecure ports for cluster, defaults to \\\"yes\\\"\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"interserverHTTPPort\": {\n \"description\": \"optional, setup `interserver_http_port` inside `clickhouse-server` settings for each Pod where current template will apply\\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=interserver]`\\nMore info: https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#interserver-http-port\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"by default, hostname will generate, but this allows define custom name for each `clickhuse-server`\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"optional, open secure ports\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"settings\": {\n \"description\": \"optional, allows configure `clickhouse-server` settings inside \\u003cyandex\\u003e...\\u003c/yandex\\u003e tag in each `Pod` where this template will apply during generate `ConfigMap` which will mount in `/etc/clickhouse-server/conf.d/`\\nMore details: https://clickhouse.tech/docs/en/operations/settings/settings/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"tcpPort\": {\n \"description\": \"optional, setup `tcp_port` inside `clickhouse-server` settings for each Pod where current template will apply\\nif specified, should have equal value with `chi.spec.templates.podTemplates.spec.containers.ports[name=tcp]`\\nMore info: https://clickhouse.tech/docs/en/interfaces/tcp/\\n\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"templates\": {\n \"description\": \"be careful, this part of CRD allows override template inside template, don't use it if you don't understand what you do\",\n \"properties\": {\n \"clusterServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"dataVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse data directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"hostTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.hostTemplates, which will apply to configure every `clickhouse-server` instance during render ConfigMap resources which will mount into `Pod`\",\n \"type\": \"string\"\n },\n \"logVolumeClaimTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.volumeClaimTemplates, allows customization each `PVC` which will mount for clickhouse log directory in each `Pod` during render and reconcile every StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.podTemplates, allows customization each `Pod` resource during render and reconcile each StatefulSet.spec resource described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"replicaServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each replica inside each shard inside each clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"serviceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for one `Service` resource which will created by `clickhouse-operator` which cover all clusters in whole `chi` resource\",\n \"type\": \"string\"\n },\n \"shardServiceTemplate\": {\n \"description\": \"optional, template name from chi.spec.templates.serviceTemplates, allows customization for each `Service` resource which will created by `clickhouse-operator` which cover each shard inside clickhouse cluster described in `chi.spec.configuration.clusters`\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplate\": {\n \"description\": \"DEPRECATED! VolumeClaimTemplate is deprecated in favor of DataVolumeClaimTemplate and LogVolumeClaimTemplate\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsPort\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"podTemplates\": {\n \"description\": \"podTemplate will use during render `Pod` inside `StatefulSet.spec` and allows define rendered `Pod.spec`, pod scheduling distribution and pod zone\\nMore information: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatespodtemplates\\n\",\n \"items\": {\n \"properties\": {\n \"distribution\": {\n \"description\": \"DEPRECATED, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`\",\n \"enum\": [\n \"\",\n \"Unspecified\",\n \"OnePerHost\"\n ],\n \"type\": \"string\"\n },\n \"generateName\": {\n \"description\": \"allows define format for generated `Pod` name, look to https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatesservicetemplates for details about aviailable template variables\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"allows pass standard object's metadata from template to Pod\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"template name, could use to link inside top-level `chi.spec.defaults.templates.podTemplate`, cluster-level `chi.spec.configuration.clusters.templates.podTemplate`, shard-level `chi.spec.configuration.clusters.layout.shards.temlates.podTemplate`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates.podTemplate`\",\n \"type\": \"string\"\n },\n \"podDistribution\": {\n \"description\": \"define ClickHouse Pod distribution policy between Kubernetes Nodes inside Shard, Replica, Namespace, CHI, another ClickHouse cluster\",\n \"items\": {\n \"properties\": {\n \"number\": {\n \"description\": \"define, how much ClickHouse Pods could be inside selected scope with selected distribution type\",\n \"maximum\": 65535,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"scope\": {\n \"description\": \"scope for apply each podDistribution\",\n \"enum\": [\n \"\",\n \"Unspecified\",\n \"Shard\",\n \"Replica\",\n \"Cluster\",\n \"ClickHouseInstallation\",\n \"Namespace\"\n ],\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"use for inter-pod affinity look to `pod.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey`, More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"you can define multiple affinity policy types\",\n \"enum\": [\n \"\",\n \"Unspecified\",\n \"ClickHouseAntiAffinity\",\n \"ShardAntiAffinity\",\n \"ReplicaAntiAffinity\",\n \"AnotherNamespaceAntiAffinity\",\n \"AnotherClickHouseInstallationAntiAffinity\",\n \"AnotherClusterAntiAffinity\",\n \"MaxNumberPerNode\",\n \"NamespaceAffinity\",\n \"ClickHouseInstallationAffinity\",\n \"ClusterAffinity\",\n \"ShardAffinity\",\n \"ReplicaAffinity\",\n \"PreviousTailAffinity\",\n \"CircularReplication\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"spec\": {\n \"description\": \"allows define whole Pod.spec inside StaefulSet.spec, look to https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates for details\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"zone\": {\n \"description\": \"allows define custom zone name and will separate ClickHouse `Pods` between nodes, shortcut for `chi.spec.templates.podTemplates.spec.affinity.podAntiAffinity`\",\n \"properties\": {\n \"key\": {\n \"description\": \"optional, if defined, allows select kubernetes nodes by label with `name` equal `key`\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"optional, if defined, allows select kubernetes nodes by label with `value` in `values`\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceTemplates\": {\n \"description\": \"allows define template for rendering `Service` which would get endpoint from Pods which scoped chi-wide, cluster-wide, shard-wide, replica-wide level\\n\",\n \"items\": {\n \"properties\": {\n \"generateName\": {\n \"description\": \"allows define format for generated `Service` name, look to https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatesservicetemplates for details about aviailable template variables\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"allows pass standard object's metadata from template to Service\\nCould be use for define specificly for Cloud Provider metadata which impact to behavior of service\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"template name, could use to link inside\\nchi-level `chi.spec.defaults.templates.serviceTemplate`\\ncluster-level `chi.spec.configuration.clusters.templates.clusterServiceTemplate`\\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.shardServiceTemplate`\\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.replicaServiceTemplate` or `chi.spec.configuration.clusters.layout.shards.replicas.replicaServiceTemplate`\\n\",\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"describe behavior of generated Service\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeClaimTemplates\": {\n \"description\": \"allows define template for rendering `PVC` kubernetes resource, which would use inside `Pod` for mount clickhouse `data`, clickhouse `logs` or something else\",\n \"items\": {\n \"properties\": {\n \"metadata\": {\n \"description\": \"allows to pass standard object's metadata from template to PVC\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"template name, could use to link inside\\ntop-level `chi.spec.defaults.templates.dataVolumeClaimTemplate` or `chi.spec.defaults.templates.logVolumeClaimTemplate`,\\ncluster-level `chi.spec.configuration.clusters.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.templates.logVolumeClaimTemplate`,\\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.shards.temlates.logVolumeClaimTemplate`\\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.replicas.templates.logVolumeClaimTemplate`\\n\",\n \"type\": \"string\"\n },\n \"provisioner\": {\n \"description\": \"defines `PVC` provisioner - be it StatefulSet or the Operator\",\n \"enum\": [\n \"\",\n \"StatefulSet\",\n \"Operator\"\n ],\n \"type\": \"string\"\n },\n \"reclaimPolicy\": {\n \"description\": \"defines behavior of `PVC` deletion.\\n`Delete` by default, if `Retain` specified then `PVC` will be kept when deleting StatefulSet\\n\",\n \"enum\": [\n \"\",\n \"Retain\",\n \"Delete\"\n ],\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"allows define all aspects of `PVC` resource\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"templating\": {\n \"description\": \"Optional, applicable inside ClickHouseInstallationTemplate only.\\nDefines current ClickHouseInstallationTemplate application options to target ClickHouseInstallation(s).\\\"\\n\",\n \"properties\": {\n \"chiSelector\": {\n \"description\": \"Optional, defines selector for ClickHouseInstallation(s) to be templated with ClickhouseInstallationTemplate\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"policy\": {\n \"description\": \"When defined as `auto` inside ClickhouseInstallationTemplate, this ClickhouseInstallationTemplate\\nwill be auto-added into ClickHouseInstallation, selectable by `chiSelector`.\\nDefault value is `manual`, meaning ClickHouseInstallation should request this ClickhouseInstallationTemplate explicitly.\\n\",\n \"enum\": [\n \"\",\n \"auto\",\n \"manual\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"troubleshoot\": {\n \"description\": \"Allows to troubleshoot Pods during CrashLoopBack state.\\nThis may happen when wrong configuration applied, in this case `clickhouse-server` wouldn't start.\\nCommand within ClickHouse container is modified with `sleep` in order to avoid quick restarts\\nand give time to troubleshoot via CLI.\\nLiveness and Readiness probes are disabled as well.\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"useTemplates\": {\n \"description\": \"list of `ClickHouseInstallationTemplate` (chit) resource names which will merge with current `Chi` manifest during render Kubernetes resources to create related ClickHouse clusters\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"name of `ClickHouseInstallationTemplate` (chit) resource\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Kubernetes namespace where need search `chit` resource, depending on `watchNamespaces` settings in `clichouse-operator`\",\n \"type\": \"string\"\n },\n \"useType\": {\n \"description\": \"optional, current strategy is only merge, and current `chi` settings have more priority than merged template `chit`\",\n \"enum\": [\n \"\",\n \"merge\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Click House Installation Template\",\n \"type\": \"object\"\n}",
+ "version": "clickhouse.altinity.com/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Click House Installation Template",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/Altinity/clickhouse-operator/master/deploy/helm/clickhouse-operator/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Database"
+ },
+ "displayName": "ClickHouse",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcc00",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/Altinity/clickhouse-operator/master/deploy/helm/clickhouse-operator/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 0 9 8\" width=\"20\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 7h1v1h-1z\" fill=\"#f00\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 0h1v7h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 3.25h1v1.5h-1z\" fill=\"#fc0\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 2500 2222\" style=\"enable-background:new 0 0 2500 2222;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{opacity:0.8;fill:#FFFFFF;}\n\u0026#x9;.st1{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M0.1,1944.2h277.8V2222H0.1V1944.2z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M0.1,0h277.8v1944.2H0.1V0z M555.6,0h277.8v2222H555.6V0z M1111.1,0h277.8v2222h-277.8V0z M1666.6,0h277.8v2222\u0026#xA;\u0026#x9;h-277.8V0z M2222.1,902.7h277.8v416.6h-277.8V902.7z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "release-0.23.7"
+ },
+ "name": "clickhouse",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "App Definition and Development",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#ffcc00",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg height=\"2222\" viewBox=\"0 0 9 8\" width=\"2500\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"m0 7h1v1h-1z\" fill=\"#f00\"/\u003e\u003cpath d=\"m0 0h1v7h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 3.25h1v1.5h-1z\" fill=\"#fc0\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 2500 2222\" style=\"enable-background:new 0 0 2500 2222;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{opacity:0.8;fill:#FFFFFF;}\n\t.st1{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M0.1,1944.2h277.8V2222H0.1V1944.2z\"/\u003e\n\u003cpath class=\"st1\" d=\"M0.1,0h277.8v1944.2H0.1V0z M555.6,0h277.8v2222H555.6V0z M1111.1,0h277.8v2222h-277.8V0z M1666.6,0h277.8v2222\n\th-277.8V0z M2222.1,902.7h277.8v416.6h-277.8V902.7z\"/\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseKeeperInstallation.json b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseKeeperInstallation.json
new file mode 100644
index 00000000000..1500e356cf5
--- /dev/null
+++ b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseKeeperInstallation.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ClickHouseKeeperInstallation",
+ "schema": "{\n \"description\": \"define a set of Kubernetes resources (StatefulSet, PVC, Service, ConfigMap) which describe behavior one ClickHouse Keeper cluster\",\n \"properties\": {\n \"spec\": {\n \"description\": \"KeeperSpec defines the desired state of a Keeper cluster\",\n \"properties\": {\n \"configuration\": {\n \"description\": \"allows configure multiple aspects and behavior for `clickhouse-server` instance and also allows describe multiple `clickhouse-server` clusters inside one `chi` resource\",\n \"properties\": {\n \"clusters\": {\n \"description\": \"describes ClickHouseKeeper clusters layout and allows change settings on cluster-level and replica-level\\n\",\n \"items\": {\n \"properties\": {\n \"layout\": {\n \"description\": \"describe current cluster layout, how many replicas\\n\",\n \"properties\": {\n \"replicasCount\": {\n \"description\": \"how many replicas in ClickHouseKeeper cluster\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"cluster name, used to identify set of ClickHouseKeeper servers and wide used during generate names of related Kubernetes resources\",\n \"maxLength\": 15,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z0-9-]{0,15}$\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"settings\": {\n \"description\": \"allows configure multiple aspects and behavior for `clickhouse-keeper` instance\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceDomainPattern\": {\n \"description\": \"Custom domain pattern which will be used for DNS names of `Service` or `Pod`.\\nTypical use scenario - custom cluster domain in Kubernetes cluster\\nExample: %s.svc.my.test\\n\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"description\": \"Replicas is the expected size of the keeper cluster.\\nThe valid range of size is from 1 to 7.\\n\",\n \"format\": \"int32\",\n \"maximum\": 7,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"templates\": {\n \"description\": \"allows define templates which will use for render Kubernetes resources like StatefulSet, ConfigMap, Service, PVC, by default, clickhouse-operator have own templates, but you can override it\",\n \"properties\": {\n \"podTemplates\": {\n \"description\": \"podTemplate will use during render `Pod` inside `StatefulSet.spec` and allows define rendered `Pod.spec`, pod scheduling distribution and pod zone\\nMore information: https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#spectemplatespodtemplates\\n\",\n \"items\": {\n \"properties\": {\n \"metadata\": {\n \"description\": \"allows pass standard object's metadata from template to Pod\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"template name, could use to link inside top-level `chi.spec.defaults.templates.podTemplate`, cluster-level `chi.spec.configuration.clusters.templates.podTemplate`, shard-level `chi.spec.configuration.clusters.layout.shards.temlates.podTemplate`, replica-level `chi.spec.configuration.clusters.layout.replicas.templates.podTemplate`\",\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"allows define whole Pod.spec inside StaefulSet.spec, look to https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates for details\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceTemplates\": {\n \"description\": \"allows define template for rendering `Service` which would get endpoint from Pods which scoped chi-wide, cluster-wide, shard-wide, replica-wide level\\n\",\n \"items\": {\n \"properties\": {\n \"metadata\": {\n \"description\": \"allows pass standard object's metadata from template to Service\\nCould be use for define specificly for Cloud Provider metadata which impact to behavior of service\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"template name, could use to link inside\\nchi-level `chi.spec.defaults.templates.serviceTemplate`\\ncluster-level `chi.spec.configuration.clusters.templates.clusterServiceTemplate`\\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.shardServiceTemplate`\\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.replicaServiceTemplate` or `chi.spec.configuration.clusters.layout.shards.replicas.replicaServiceTemplate`\\n\",\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"describe behavior of generated Service\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeClaimTemplates\": {\n \"description\": \"allows define template for rendering `PVC` kubernetes resource, which would use inside `Pod` for mount clickhouse `data`, clickhouse `logs` or something else\",\n \"items\": {\n \"properties\": {\n \"metadata\": {\n \"description\": \"allows to pass standard object's metadata from template to PVC\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"template name, could use to link inside\\ntop-level `chi.spec.defaults.templates.dataVolumeClaimTemplate` or `chi.spec.defaults.templates.logVolumeClaimTemplate`,\\ncluster-level `chi.spec.configuration.clusters.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.templates.logVolumeClaimTemplate`,\\nshard-level `chi.spec.configuration.clusters.layout.shards.temlates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.shards.temlates.logVolumeClaimTemplate`\\nreplica-level `chi.spec.configuration.clusters.layout.replicas.templates.dataVolumeClaimTemplate` or `chi.spec.configuration.clusters.layout.replicas.templates.logVolumeClaimTemplate`\\n\",\n \"type\": \"string\"\n },\n \"spec\": {\n \"description\": \"allows define all aspects of `PVC` resource\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims\\n\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Click House Keeper Installation\",\n \"type\": \"object\"\n}",
+ "version": "clickhouse-keeper.altinity.com/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Click House Keeper Installation",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/Altinity/clickhouse-operator/master/deploy/helm/clickhouse-operator/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Database"
+ },
+ "displayName": "ClickHouse",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcc00",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/Altinity/clickhouse-operator/master/deploy/helm/clickhouse-operator/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 0 9 8\" width=\"20\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 7h1v1h-1z\" fill=\"#f00\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 0h1v7h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 3.25h1v1.5h-1z\" fill=\"#fc0\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 2500 2222\" style=\"enable-background:new 0 0 2500 2222;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{opacity:0.8;fill:#FFFFFF;}\n\u0026#x9;.st1{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M0.1,1944.2h277.8V2222H0.1V1944.2z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M0.1,0h277.8v1944.2H0.1V0z M555.6,0h277.8v2222H555.6V0z M1111.1,0h277.8v2222h-277.8V0z M1666.6,0h277.8v2222\u0026#xA;\u0026#x9;h-277.8V0z M2222.1,902.7h277.8v416.6h-277.8V902.7z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "release-0.23.7"
+ },
+ "name": "clickhouse",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "App Definition and Development",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#ffcc00",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg height=\"2222\" viewBox=\"0 0 9 8\" width=\"2500\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"m0 7h1v1h-1z\" fill=\"#f00\"/\u003e\u003cpath d=\"m0 0h1v7h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 3.25h1v1.5h-1z\" fill=\"#fc0\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 2500 2222\" style=\"enable-background:new 0 0 2500 2222;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{opacity:0.8;fill:#FFFFFF;}\n\t.st1{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M0.1,1944.2h277.8V2222H0.1V1944.2z\"/\u003e\n\u003cpath class=\"st1\" d=\"M0.1,0h277.8v1944.2H0.1V0z M555.6,0h277.8v2222H555.6V0z M1111.1,0h277.8v2222h-277.8V0z M1666.6,0h277.8v2222\n\th-277.8V0z M2222.1,902.7h277.8v416.6h-277.8V902.7z\"/\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseOperatorConfiguration.json b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseOperatorConfiguration.json
new file mode 100644
index 00000000000..fe46bc7f816
--- /dev/null
+++ b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/components/ClickHouseOperatorConfiguration.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ClickHouseOperatorConfiguration",
+ "schema": "{\n \"description\": \"allows customize `clickhouse-operator` settings, need restart clickhouse-operator pod after adding, more details https://github.com/Altinity/clickhouse-operator/blob/master/docs/operator_configuration.md\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Allows to define settings of the clickhouse-operator.\\nMore info: https://github.com/Altinity/clickhouse-operator/blob/master/config/config.yaml\\nCheck into etc-clickhouse-operator* ConfigMaps if you need more control\\n\",\n \"format\": \"textarea\",\n \"properties\": {\n \"annotation\": {\n \"description\": \"defines which metadata.annotations items will include or exclude during render StatefulSet, Pod, PVC resources\",\n \"properties\": {\n \"exclude\": {\n \"description\": \"When propagating labels from the chi's `metadata.annotations` section to child objects' `metadata.annotations`,\\nexclude annotations with names from the following list\\n\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"include\": {\n \"description\": \"When propagating labels from the chi's `metadata.annotations` section to child objects' `metadata.annotations`,\\ninclude annotations with names from the following list\\n\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"clickhouse\": {\n \"description\": \"Clickhouse related parameters used by clickhouse-operator\",\n \"properties\": {\n \"access\": {\n \"description\": \"parameters which use for connect to clickhouse from clickhouse-operator deployment\",\n \"properties\": {\n \"password\": {\n \"description\": \"ClickHouse password to be used by operator to connect to ClickHouse instances, deprecated, use chCredentialsSecretName\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Port to be used by operator to connect to ClickHouse instances\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"rootCA\": {\n \"description\": \"Root certificate authority that clients use when verifying server certificates. Used for https connection to ClickHouse\",\n \"type\": \"string\"\n },\n \"scheme\": {\n \"description\": \"The scheme to user for connecting to ClickHouse. Possible values: http, https, auto\",\n \"type\": \"string\"\n },\n \"secret\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Name of k8s Secret with username and password to be used by operator to connect to ClickHouse instances\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Location of k8s Secret with username and password to be used by operator to connect to ClickHouse instances\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"timeouts\": {\n \"description\": \"Timeouts used to limit connection and queries from the operator to ClickHouse instances, In seconds\",\n \"properties\": {\n \"connect\": {\n \"description\": \"Timout to setup connection from the operator to ClickHouse instances. In seconds.\",\n \"maximum\": 10,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"query\": {\n \"description\": \"Timout to perform SQL query from the operator to ClickHouse instances. In seconds.\",\n \"maximum\": 600,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"username\": {\n \"description\": \"ClickHouse username to be used by operator to connect to ClickHouse instances, deprecated, use chCredentialsSecretName\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"configuration\": {\n \"properties\": {\n \"file\": {\n \"properties\": {\n \"path\": {\n \"description\": \"Each 'path' can be either absolute or relative.\\nIn case path is absolute - it is used as is.\\nIn case path is relative - it is relative to the folder where configuration file you are reading right now is located.\\n\",\n \"properties\": {\n \"common\": {\n \"description\": \"Path to the folder where ClickHouse configuration files common for all instances within a CHI are located.\\nDefault value - config.d\\n\",\n \"type\": \"string\"\n },\n \"host\": {\n \"description\": \"Path to the folder where ClickHouse configuration files unique for each instance (host) within a CHI are located.\\nDefault value - conf.d\\n\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"Path to the folder where ClickHouse configuration files with users settings are located.\\nFiles are common for all instances within a CHI.\\nDefault value - users.d\\n\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"network\": {\n \"description\": \"Default network parameters for any user which will create\",\n \"properties\": {\n \"hostRegexpTemplate\": {\n \"description\": \"ClickHouse server configuration `\\u003chost_regexp\\u003e...\\u003c/host_regexp\\u003e` for any \\u003cuser\\u003e\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"user\": {\n \"description\": \"Default parameters for any user which will create\",\n \"properties\": {\n \"default\": {\n \"properties\": {\n \"networksIP\": {\n \"description\": \"ClickHouse server configuration `\\u003cnetworks\\u003e\\u003cip\\u003e...\\u003c/ip\\u003e\\u003c/networks\\u003e` for any \\u003cuser\\u003e\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"password\": {\n \"description\": \"ClickHouse server configuration `\\u003cpassword\\u003e...\\u003c/password\\u003e` for any \\u003cuser\\u003e\",\n \"type\": \"string\"\n },\n \"profile\": {\n \"description\": \"ClickHouse server configuration `\\u003cprofile\\u003e...\\u003c/profile\\u003e` for any \\u003cuser\\u003e\",\n \"type\": \"string\"\n },\n \"quota\": {\n \"description\": \"ClickHouse server configuration `\\u003cquota\\u003e...\\u003c/quota\\u003e` for any \\u003cuser\\u003e\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"configurationRestartPolicy\": {\n \"description\": \"Configuration restart policy describes what configuration changes require ClickHouse restart\",\n \"properties\": {\n \"rules\": {\n \"description\": \"Array of set of rules per specified ClickHouse versions\",\n \"items\": {\n \"properties\": {\n \"rules\": {\n \"description\": \"Set of configuration rules for specified ClickHouse version\",\n \"items\": {\n \"description\": \"setting: value pairs for configuration restart policy\",\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"version\": {\n \"description\": \"ClickHouse version expression\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metrics\": {\n \"description\": \"parameters which use for connect to fetch metrics from clickhouse by clickhouse-operator\",\n \"properties\": {\n \"timeouts\": {\n \"description\": \"Timeouts used to limit connection and queries from the metrics exporter to ClickHouse instances\\nSpecified in seconds.\\n\",\n \"properties\": {\n \"collect\": {\n \"description\": \"Timeout used to limit metrics collection request. In seconds.\\nUpon reaching this timeout metrics collection is aborted and no more metrics are collected in this cycle.\\nAll collected metrics are returned.\\n\",\n \"maximum\": 600,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"label\": {\n \"description\": \"defines which metadata.labels will include or exclude during render StatefulSet, Pod, PVC resources\",\n \"properties\": {\n \"appendScope\": {\n \"description\": \"Whether to append *Scope* labels to StatefulSet and Pod\\n- \\\"LabelShardScopeIndex\\\"\\n- \\\"LabelReplicaScopeIndex\\\"\\n- \\\"LabelCHIScopeIndex\\\"\\n- \\\"LabelCHIScopeCycleSize\\\"\\n- \\\"LabelCHIScopeCycleIndex\\\"\\n- \\\"LabelCHIScopeCycleOffset\\\"\\n- \\\"LabelClusterScopeIndex\\\"\\n- \\\"LabelClusterScopeCycleSize\\\"\\n- \\\"LabelClusterScopeCycleIndex\\\"\\n- \\\"LabelClusterScopeCycleOffset\\\"\\n\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"exclude\": {\n \"description\": \"When propagating labels from the chi's `metadata.labels` section to child objects' `metadata.labels`,\\nexclude labels from the following list\\n\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"include\": {\n \"description\": \"When propagating labels from the chi's `metadata.labels` section to child objects' `metadata.labels`,\\ninclude labels from the following list\\n\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"logger\": {\n \"description\": \"allow setup clickhouse-operator logger behavior\",\n \"properties\": {\n \"alsologtostderr\": {\n \"description\": \"boolean allows logs to stderr and files both\",\n \"type\": \"string\"\n },\n \"log_backtrace_at\": {\n \"description\": \"It can be set to a file and line number with a logging line.\\nEx.: file.go:123\\nEach time when this line is being executed, a stack trace will be written to the Info log.\\n\",\n \"type\": \"string\"\n },\n \"logtostderr\": {\n \"description\": \"boolean, allows logs to stderr\",\n \"type\": \"string\"\n },\n \"stderrthreshold\": {\n \"type\": \"string\"\n },\n \"v\": {\n \"description\": \"verbosity level of clickhouse-operator log, default - 1 max - 9\",\n \"type\": \"string\"\n },\n \"vmodule\": {\n \"description\": \"Comma-separated list of filename=N, where filename (can be a pattern) must have no .go ext, and N is a V level.\\nEx.: file*=2 sets the 'V' to 2 in all files with names like file*.\\n\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"pod\": {\n \"description\": \"define pod specific parameters\",\n \"properties\": {\n \"terminationGracePeriod\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. \\nLook details in `pod.spec.terminationGracePeriodSeconds`\\n\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"reconcile\": {\n \"description\": \"allow tuning reconciling process\",\n \"properties\": {\n \"host\": {\n \"description\": \"Whether the operator during reconcile procedure should wait for a ClickHouse host:\\n - to be excluded from a ClickHouse cluster\\n - to complete all running queries\\n - to be included into a ClickHouse cluster\\nrespectfully before moving forward\\n\",\n \"properties\": {\n \"wait\": {\n \"properties\": {\n \"exclude\": {\n \"description\": \"Whether the operator during reconcile procedure should wait for a ClickHouse host to be excluded from a ClickHouse cluster\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"Whether the operator during reconcile procedure should wait for a ClickHouse host to be included into a ClickHouse cluster\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n },\n \"queries\": {\n \"description\": \"Whether the operator during reconcile procedure should wait for a ClickHouse host to complete all running queries\",\n \"enum\": [\n \"\",\n \"0\",\n \"1\",\n \"False\",\n \"false\",\n \"True\",\n \"true\",\n \"No\",\n \"no\",\n \"Yes\",\n \"yes\",\n \"Off\",\n \"off\",\n \"On\",\n \"on\",\n \"Disable\",\n \"disable\",\n \"Enable\",\n \"enable\",\n \"Disabled\",\n \"disabled\",\n \"Enabled\",\n \"enabled\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"runtime\": {\n \"description\": \"runtime parameters for clickhouse-operator process which are used during reconcile cycle\",\n \"properties\": {\n \"reconcileCHIsThreadsNumber\": {\n \"description\": \"How many goroutines will be used to reconcile CHIs in parallel, 10 by default\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"reconcileShardsMaxConcurrencyPercent\": {\n \"description\": \"The maximum percentage of cluster shards that may be reconciled in parallel, 50 percent by default.\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"reconcileShardsThreadsNumber\": {\n \"description\": \"How many goroutines will be used to reconcile shards of a cluster in parallel, 1 by default\",\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"statefulSet\": {\n \"description\": \"Allow change default behavior for reconciling StatefulSet which generated by clickhouse-operator\",\n \"properties\": {\n \"create\": {\n \"description\": \"Behavior during create StatefulSet\",\n \"properties\": {\n \"onFailure\": {\n \"description\": \"What to do in case created StatefulSet is not in Ready after `statefulSetUpdateTimeout` seconds\\nPossible options:\\n1. abort - do nothing, just break the process and wait for admin.\\n2. delete - delete newly created problematic StatefulSet.\\n3. ignore (default) - ignore error, pretend nothing happened and move on to the next StatefulSet.\\n\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"update\": {\n \"description\": \"Behavior during update StatefulSet\",\n \"properties\": {\n \"onFailure\": {\n \"description\": \"What to do in case updated StatefulSet is not in Ready after `statefulSetUpdateTimeout` seconds\\nPossible options:\\n1. abort - do nothing, just break the process and wait for admin.\\n2. rollback (default) - delete Pod and rollback StatefulSet to previous Generation. Pod would be recreated by StatefulSet based on rollback-ed configuration.\\n3. ignore - ignore error, pretend nothing happened and move on to the next StatefulSet.\\n\",\n \"type\": \"string\"\n },\n \"pollInterval\": {\n \"description\": \"How many seconds to wait between checks for created/updated StatefulSet status\",\n \"type\": \"integer\"\n },\n \"timeout\": {\n \"description\": \"How many seconds to wait for created/updated StatefulSet to be Ready\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"statefulSet\": {\n \"description\": \"define StatefulSet-specific parameters\",\n \"properties\": {\n \"revisionHistoryLimit\": {\n \"description\": \"revisionHistoryLimit is the maximum number of revisions that will be\\nmaintained in the StatefulSet's revision history. \\nLook details in `statefulset.spec.revisionHistoryLimit`\\n\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"template\": {\n \"description\": \"Parameters which are used if you want to generate ClickHouseInstallationTemplate custom resources from files which are stored inside clickhouse-operator deployment\",\n \"properties\": {\n \"chi\": {\n \"properties\": {\n \"path\": {\n \"description\": \"Path to folder where ClickHouseInstallationTemplate .yaml manifests are located.\",\n \"type\": \"string\"\n },\n \"policy\": {\n \"description\": \"CHI template updates handling policy\\nPossible policy values:\\n - ReadOnStart. Accept CHIT updates on the operators start only.\\n - ApplyOnNextReconcile. Accept CHIT updates at all time. Apply news CHITs on next regular reconcile of the CHI\\n\",\n \"enum\": [\n \"\",\n \"ReadOnStart\",\n \"ApplyOnNextReconcile\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"watch\": {\n \"description\": \"Parameters for watch kubernetes resources which used by clickhouse-operator deployment\",\n \"properties\": {\n \"namespaces\": {\n \"description\": \"List of namespaces where clickhouse-operator watches for events.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n }\n },\n \"title\": \"Click House Operator Configuration\",\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n}",
+ "version": "clickhouse.altinity.com/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Click House Operator Configuration",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/Altinity/clickhouse-operator/master/deploy/helm/clickhouse-operator/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Database"
+ },
+ "displayName": "ClickHouse",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcc00",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/Altinity/clickhouse-operator/master/deploy/helm/clickhouse-operator/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 0 9 8\" width=\"20\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 7h1v1h-1z\" fill=\"#f00\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 0h1v7h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 3.25h1v1.5h-1z\" fill=\"#fc0\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 2500 2222\" style=\"enable-background:new 0 0 2500 2222;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{opacity:0.8;fill:#FFFFFF;}\n\u0026#x9;.st1{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M0.1,1944.2h277.8V2222H0.1V1944.2z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M0.1,0h277.8v1944.2H0.1V0z M555.6,0h277.8v2222H555.6V0z M1111.1,0h277.8v2222h-277.8V0z M1666.6,0h277.8v2222\u0026#xA;\u0026#x9;h-277.8V0z M2222.1,902.7h277.8v416.6h-277.8V902.7z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "release-0.23.7"
+ },
+ "name": "clickhouse",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "App Definition and Development",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#ffcc00",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg height=\"2222\" viewBox=\"0 0 9 8\" width=\"2500\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"m0 7h1v1h-1z\" fill=\"#f00\"/\u003e\u003cpath d=\"m0 0h1v7h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 3.25h1v1.5h-1z\" fill=\"#fc0\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 2500 2222\" style=\"enable-background:new 0 0 2500 2222;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{opacity:0.8;fill:#FFFFFF;}\n\t.st1{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M0.1,1944.2h277.8V2222H0.1V1944.2z\"/\u003e\n\u003cpath class=\"st1\" d=\"M0.1,0h277.8v1944.2H0.1V0z M555.6,0h277.8v2222H555.6V0z M1111.1,0h277.8v2222h-277.8V0z M1666.6,0h277.8v2222\n\th-277.8V0z M2222.1,902.7h277.8v416.6h-277.8V902.7z\"/\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/model.json b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/model.json
new file mode 100644
index 00000000000..b84bda889f9
--- /dev/null
+++ b/server/meshmodel/clickhouse/release-0.23.7/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Database"
+ },
+ "displayName": "ClickHouse",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#ffcc00",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 0 9 8\" width=\"20\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 7h1v1h-1z\" fill=\"#f00\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m0 0h1v7h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 0h1v8h-1zm2 3.25h1v1.5h-1z\" fill=\"#fc0\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 2500 2222\" style=\"enable-background:new 0 0 2500 2222;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{opacity:0.8;fill:#FFFFFF;}\n\u0026#x9;.st1{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M0.1,1944.2h277.8V2222H0.1V1944.2z\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st1\" d=\"M0.1,0h277.8v1944.2H0.1V0z M555.6,0h277.8v2222H555.6V0z M1111.1,0h277.8v2222h-277.8V0z M1666.6,0h277.8v2222\u0026#xA;\u0026#x9;h-277.8V0z M2222.1,902.7h277.8v416.6h-277.8V902.7z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "release-0.23.7"
+ },
+ "name": "clickhouse",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "App Definition and Development",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/ClusterImportPolicy.json b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/ClusterImportPolicy.json
new file mode 100644
index 00000000000..f37a24e3433
--- /dev/null
+++ b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/ClusterImportPolicy.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ClusterImportPolicy",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"creationCondition\": {\n \"type\": \"string\"\n },\n \"nameTemplate\": {\n \"type\": \"string\"\n },\n \"references\": {\n \"items\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"nameTemplate\": {\n \"type\": \"string\"\n },\n \"namespaceTemplate\": {\n \"type\": \"string\"\n },\n \"resource\": {\n \"type\": \"string\"\n },\n \"versions\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"group\",\n \"key\",\n \"nameTemplate\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"source\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"resource\": {\n \"type\": \"string\"\n },\n \"selectorTemplate\": {\n \"type\": \"string\"\n },\n \"versions\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"group\",\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"template\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"creationCondition\",\n \"nameTemplate\",\n \"source\",\n \"template\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Cluster Import Policy\",\n \"type\": \"object\"\n}",
+ "version": "policy.clusterpedia.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Cluster Import Policy",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/clusterpedia-io/clusterpedia/main/kustomize/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Clusterpedia",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#33de72",
+ "secondaryColor": "#47e180",
+ "shape": "circle",
+ "source_uri": "git://github.com/clusterpedia-io/clusterpedia/main/kustomize/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Color_Dark\" data-name=\"Cpedia - Graph - Color Dark\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#1b1c1d\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#33de72\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Light\" data-name=\"Cpedia - Graph - Light\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#fff\" opacity=\"0.66\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v0.8.1"
+ },
+ "name": "clusterpedia",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#33de72",
+ "secondaryColor": "#47e180",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Graph\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cg id=\"Cpedia_-_Graph_-_Color_Dark\" data-name=\"Cpedia - Graph - Color Dark\"\u003e\u003crect id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"/\u003e\u003cpath id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#1b1c1d\"/\u003e\u003cpath id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#33de72\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Graph\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cg id=\"Cpedia_-_Graph_-_Light\" data-name=\"Cpedia - Graph - Light\"\u003e\u003crect id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"/\u003e\u003cpath id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#fff\" opacity=\"0.66\"/\u003e\u003cpath id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#fff\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/ClusterSyncResources.json b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/ClusterSyncResources.json
new file mode 100644
index 00000000000..3db2a6ce82d
--- /dev/null
+++ b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/ClusterSyncResources.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ClusterSyncResources",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"syncResources\": {\n \"items\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"resources\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"versions\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"group\",\n \"resources\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"syncResources\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Cluster Sync Resources\",\n \"type\": \"object\"\n}",
+ "version": "cluster.clusterpedia.io/v1alpha2"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Cluster Sync Resources",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/clusterpedia-io/clusterpedia/main/kustomize/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Clusterpedia",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#33de72",
+ "secondaryColor": "#47e180",
+ "shape": "circle",
+ "source_uri": "git://github.com/clusterpedia-io/clusterpedia/main/kustomize/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Color_Dark\" data-name=\"Cpedia - Graph - Color Dark\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#1b1c1d\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#33de72\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Light\" data-name=\"Cpedia - Graph - Light\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#fff\" opacity=\"0.66\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v0.8.1"
+ },
+ "name": "clusterpedia",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#33de72",
+ "secondaryColor": "#47e180",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Graph\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cg id=\"Cpedia_-_Graph_-_Color_Dark\" data-name=\"Cpedia - Graph - Color Dark\"\u003e\u003crect id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"/\u003e\u003cpath id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#1b1c1d\"/\u003e\u003cpath id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#33de72\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Graph\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cg id=\"Cpedia_-_Graph_-_Light\" data-name=\"Cpedia - Graph - Light\"\u003e\u003crect id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"/\u003e\u003cpath id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#fff\" opacity=\"0.66\"/\u003e\u003cpath id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#fff\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/PediaCluster.json b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/PediaCluster.json
new file mode 100644
index 00000000000..db3aa91ac68
--- /dev/null
+++ b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/PediaCluster.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "PediaCluster",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"apiserver\": {\n \"type\": \"string\"\n },\n \"caData\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"certData\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"keyData\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"kubeconfig\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"shardingName\": {\n \"type\": \"string\"\n },\n \"syncAllCustomResources\": {\n \"type\": \"boolean\"\n },\n \"syncResources\": {\n \"items\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"resources\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"versions\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"group\",\n \"resources\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"syncResourcesRefName\": {\n \"type\": \"string\"\n },\n \"tokenData\": {\n \"format\": \"byte\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"syncResources\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Pedia Cluster\",\n \"type\": \"object\"\n}",
+ "version": "cluster.clusterpedia.io/v1alpha2"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Pedia Cluster",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/clusterpedia-io/clusterpedia/main/kustomize/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Clusterpedia",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#33de72",
+ "secondaryColor": "#47e180",
+ "shape": "circle",
+ "source_uri": "git://github.com/clusterpedia-io/clusterpedia/main/kustomize/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Color_Dark\" data-name=\"Cpedia - Graph - Color Dark\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#1b1c1d\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#33de72\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Light\" data-name=\"Cpedia - Graph - Light\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#fff\" opacity=\"0.66\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v0.8.1"
+ },
+ "name": "clusterpedia",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#33de72",
+ "secondaryColor": "#47e180",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Graph\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cg id=\"Cpedia_-_Graph_-_Color_Dark\" data-name=\"Cpedia - Graph - Color Dark\"\u003e\u003crect id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"/\u003e\u003cpath id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#1b1c1d\"/\u003e\u003cpath id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#33de72\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Graph\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cg id=\"Cpedia_-_Graph_-_Light\" data-name=\"Cpedia - Graph - Light\"\u003e\u003crect id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"/\u003e\u003cpath id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#fff\" opacity=\"0.66\"/\u003e\u003cpath id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#fff\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/PediaClusterLifecycle.json b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/PediaClusterLifecycle.json
new file mode 100644
index 00000000000..d7167541609
--- /dev/null
+++ b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/components/PediaClusterLifecycle.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "PediaClusterLifecycle",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"creationCondition\": {\n \"type\": \"string\"\n },\n \"references\": {\n \"items\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"nameTemplate\": {\n \"type\": \"string\"\n },\n \"namespaceTemplate\": {\n \"type\": \"string\"\n },\n \"resource\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"group\",\n \"key\",\n \"nameTemplate\",\n \"resource\",\n \"version\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"source\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n },\n \"resource\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"group\",\n \"name\",\n \"resource\",\n \"version\"\n ],\n \"type\": \"object\"\n },\n \"template\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"creationCondition\",\n \"source\",\n \"template\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Pedia Cluster Lifecycle\",\n \"type\": \"object\"\n}",
+ "version": "policy.clusterpedia.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Pedia Cluster Lifecycle",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/clusterpedia-io/clusterpedia/main/kustomize/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Clusterpedia",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#33de72",
+ "secondaryColor": "#47e180",
+ "shape": "circle",
+ "source_uri": "git://github.com/clusterpedia-io/clusterpedia/main/kustomize/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Color_Dark\" data-name=\"Cpedia - Graph - Color Dark\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#1b1c1d\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#33de72\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Light\" data-name=\"Cpedia - Graph - Light\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#fff\" opacity=\"0.66\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v0.8.1"
+ },
+ "name": "clusterpedia",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#33de72",
+ "secondaryColor": "#47e180",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Graph\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cg id=\"Cpedia_-_Graph_-_Color_Dark\" data-name=\"Cpedia - Graph - Color Dark\"\u003e\u003crect id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"/\u003e\u003cpath id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#1b1c1d\"/\u003e\u003cpath id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#33de72\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Graph\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cg id=\"Cpedia_-_Graph_-_Light\" data-name=\"Cpedia - Graph - Light\"\u003e\u003crect id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"/\u003e\u003cpath id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#fff\" opacity=\"0.66\"/\u003e\u003cpath id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#fff\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/model.json b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/model.json
new file mode 100644
index 00000000000..25def57f7f5
--- /dev/null
+++ b/server/meshmodel/clusterpedia/v0.8.1/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Clusterpedia",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#33de72",
+ "secondaryColor": "#47e180",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Color_Dark\" data-name=\"Cpedia - Graph - Color Dark\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#1b1c1d\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#33de72\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Graph\" viewBox=\"0 0 512 512\" height=\"20\" width=\"20\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"Cpedia_-_Graph_-_Light\" data-name=\"Cpedia - Graph - Light\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" id=\"Frame\" width=\"512\" height=\"512\" fill=\"none\"\u003e\u003c/rect\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Secondary\" d=\"M476,221.051A274.908,274.908,0,0,0,428.269,256,282.438,282.438,0,0,1,395.7,220.752,322.971,322.971,0,0,1,452,179.482ZM362.4,256a334.139,334.139,0,0,0-53.2,92.145A329.953,329.953,0,0,0,295.32,394.6a322.932,322.932,0,0,0-7.587,69.4h48a274.957,274.957,0,0,1,6.4-58.813,282.32,282.32,0,0,1,14.238-45.835,285.94,285.94,0,0,1,39.323-68.1A330.2,330.2,0,0,1,362.4,256ZM169.865,405.189a274.9,274.9,0,0,1,6.4,58.811h48a322.893,322.893,0,0,0-7.589-69.4A282.46,282.46,0,0,0,169.865,405.189ZM179.94,300.03A333.961,333.961,0,0,0,149.6,256a330,330,0,0,0-33.291-35.248A322.915,322.915,0,0,0,60,179.482L36,221.051A274.964,274.964,0,0,1,83.733,256a282.3,282.3,0,0,1,32.576,35.248,286.331,286.331,0,0,1,22.054,32.768,286.3,286.3,0,0,1,17.264,35.339A330.144,330.144,0,0,1,202.8,348.148,334.156,334.156,0,0,0,179.94,300.03ZM169.865,106.811a274.966,274.966,0,0,1-54.132-23.862l-24,41.569a322.934,322.934,0,0,0,63.894,28.127A282.241,282.241,0,0,0,169.865,106.811Zm186.507,45.836a322.994,322.994,0,0,0,63.895-28.129l-24-41.569a275.02,275.02,0,0,1-54.133,23.864A282.293,282.293,0,0,1,295.32,117.4a286.278,286.278,0,0,1-39.307,2.716h-.1a286.366,286.366,0,0,1-39.237-2.718,330.245,330.245,0,0,1-13.88,46.455,334.129,334.129,0,0,0,53.1,4.263h.115a333.931,333.931,0,0,0,53.187-4.261A329.92,329.92,0,0,0,356.372,152.647Z\" fill=\"#fff\" opacity=\"0.66\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"Primary\" d=\"M211.993,256l22-38.1h44l22,38.1-22,38.105h-44ZM342.134,106.813A274.957,274.957,0,0,1,335.733,48h-48a322.932,322.932,0,0,0,7.587,69.4A282.293,282.293,0,0,0,342.134,106.813ZM428.269,256A282.438,282.438,0,0,1,395.7,220.752a285.92,285.92,0,0,1-39.323-68.105A329.92,329.92,0,0,1,309.2,163.854,334.125,334.125,0,0,0,362.4,256,330.2,330.2,0,0,0,395.7,291.248,322.971,322.971,0,0,0,452,332.518l24-41.569A274.908,274.908,0,0,1,428.269,256ZM149.6,256a333.961,333.961,0,0,0,30.34-44.03A334.156,334.156,0,0,0,202.8,163.852a330.245,330.245,0,0,0,13.88-46.455A322.893,322.893,0,0,0,224.267,48h-48a274.9,274.9,0,0,1-6.4,58.811,282.241,282.241,0,0,1-14.238,45.834,286.3,286.3,0,0,1-17.264,35.339,286.331,286.331,0,0,1-22.054,32.768A330,330,0,0,1,149.6,256Zm-65.867,0A274.964,274.964,0,0,1,36,290.949l24,41.569a322.915,322.915,0,0,0,56.309-41.27A282.3,282.3,0,0,0,83.733,256ZM255.9,343.885a334.129,334.129,0,0,0-53.1,4.263,330.144,330.144,0,0,0-47.171,11.207,322.934,322.934,0,0,0-63.894,28.127l24,41.569a274.966,274.966,0,0,1,54.132-23.862A282.46,282.46,0,0,1,216.678,394.6a286.366,286.366,0,0,1,39.237-2.718h.1A286.278,286.278,0,0,1,295.32,394.6a329.953,329.953,0,0,1,13.88-46.456,334.028,334.028,0,0,0-53.187-4.26Zm86.236,61.3a275.027,275.027,0,0,1,54.133,23.864l24-41.569a322.991,322.991,0,0,0-63.895-28.13A282.32,282.32,0,0,0,342.134,405.187Z\" fill=\"#fff\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v0.8.1"
+ },
+ "name": "clusterpedia",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/confidential containers/v0.9.0/v1.0.0/components/CcRuntime.json b/server/meshmodel/confidential containers/v0.9.0/v1.0.0/components/CcRuntime.json
new file mode 100644
index 00000000000..2e4aa748524
--- /dev/null
+++ b/server/meshmodel/confidential containers/v0.9.0/v1.0.0/components/CcRuntime.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "CcRuntime",
+ "schema": "{\n \"description\": \"CcRuntime is the Schema for the ccruntimes API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CcRuntimeSpec defines the desired state of CcRuntime\",\n \"properties\": {\n \"ccNodeSelector\": {\n \"description\": \"CcNodeSelector is used to select the worker nodes to deploy the runtime if not specified, all worker nodes are selected\",\n \"nullable\": true,\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"config\": {\n \"description\": \"CcInstallConfig is a placeholder struct\",\n \"properties\": {\n \"ImagePullSecret\": {\n \"description\": \"This specifies the registry secret to pull of the container images\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"cleanupCmd\": {\n \"description\": \"This specifies the command for cleanup on the nodes\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"debug\": {\n \"description\": \"This specifies whether the CcRuntime (kata or enclave-cc) will be running on debug mode\",\n \"type\": \"boolean\"\n },\n \"defaultRuntimeClassName\": {\n \"description\": \"This specifies the RuntimeClass to be used as the default one If not set, the default \\\"kata\\\" runtime class will NOT be created. Otherwise, the default \\\"kata\\\" runtime class will be created as as \\\"alias\\\" for the value set here\",\n \"type\": \"string\"\n },\n \"environmentVariables\": {\n \"description\": \"This specifies the environment variables required by the daemon set\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"guestInitrdImage\": {\n \"description\": \"This specifies the location of the container image containing the guest initrd If both bundleImage and guestInitrdImage are specified, then guestInitrdImage content will override the equivalent one in payloadImage\",\n \"type\": \"string\"\n },\n \"guestKernelImage\": {\n \"description\": \"This specifies the location of the container image containing the guest kernel If both bundleImage and guestKernelImage are specified, then guestKernelImage content will override the equivalent one in payloadImage\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"PullPolicy describes a policy for if/when to pull a container image\",\n \"type\": \"string\"\n },\n \"installCmd\": {\n \"description\": \"This specifies the command for installation of the runtime on the nodes\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"installDoneLabel\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"This specifies the label that the install daemonset adds to nodes when the installation is done\",\n \"type\": \"object\"\n },\n \"installType\": {\n \"description\": \"This indicates whether to use native OS packaging (rpm/deb) or Container image Default is bundle (container image)\",\n \"enum\": [\n \"bundle\",\n \"osnative\"\n ],\n \"type\": \"string\"\n },\n \"installerVolumeMounts\": {\n \"description\": \"This specifies volume mounts required for the installer pods\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"installerVolumes\": {\n \"description\": \"This specifies volumes required for the installer pods\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is 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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is 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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is 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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is 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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is 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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly 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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType 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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents 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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the 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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the 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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is 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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is 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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is 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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the 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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the 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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is 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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Default is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is 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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"osNativeRepo\": {\n \"description\": \"This specifies the repo location to be used when using rpm/deb packages Some examples add-apt-repository 'deb [arch=amd64] https://repo.confidential-containers.org/apt/ubuntu’ add-apt-repository ppa:confidential-containers/cc-bundle dnf install -y https://repo.confidential-containers.org/yum/centos/cc-bundle-repo.rpm\",\n \"type\": \"string\"\n },\n \"payloadImage\": {\n \"description\": \"This specifies the location of the container image with all artifacts (Cc runtime binaries, initrd, kernel, config etc) when using \\\"bundle\\\" installType\",\n \"type\": \"string\"\n },\n \"postUninstall\": {\n \"description\": \"This specifies the configuration for the post-uninstall daemonset\",\n \"properties\": {\n \"cmd\": {\n \"description\": \"This specifies the command executes before UnInstallCmd\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"environmentVariables\": {\n \"description\": \"This specifies the env variables for the post-uninstall daemon set\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"This specifies the pull spec for the postuninstall daemonset image\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"This specifies the volumeMounts for the post-uninstall daemon set\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"This specifies the volumes for the post-uninstall daemon set\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is 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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is 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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is 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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is 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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is 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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly 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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType 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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents 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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the 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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the 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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is 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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is 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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is 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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the 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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the 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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is 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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Default is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is 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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"preInstall\": {\n \"description\": \"This specifies the configuration for the pre-install daemonset\",\n \"properties\": {\n \"cmd\": {\n \"description\": \"This specifies the command executes before InstallCmd\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"environmentVariables\": {\n \"description\": \"This specifies the env variables for the pre-install daemon set\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"This specifies the image for the pre-install scripts\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"This specifies the volumeMounts for the pre-install daemon set\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"This specifies the volumes for the pre-install daemon set\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is 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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is 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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is 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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is 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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is 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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly 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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType 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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents 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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the 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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the 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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is 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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is 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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is 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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the 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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the 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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is 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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Default is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the 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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is 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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeClasses\": {\n \"description\": \"This specifies the RuntimeClasses that need to be created, with its name and an associated snapshotter to be used\",\n \"items\": {\n \"description\": \"RuntimeClass holds the name and basic customizations to be used by a runtime class\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the runtime class\",\n \"type\": \"string\"\n },\n \"pulltype\": {\n \"description\": \"The pulling image method to be used by the runtime class\",\n \"type\": \"string\"\n },\n \"snapshotter\": {\n \"description\": \"The snapshotter to be used by the runtime class\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"pulltype\",\n \"snapshotter\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"runtimeImage\": {\n \"description\": \"This specifies the location of the container image containing the Cc runtime binaries If both payloadImage and runtimeImage are specified, then runtimeImage content will override the equivalent one in payloadImage\",\n \"type\": \"string\"\n },\n \"uninstallCmd\": {\n \"description\": \"This specifies the command for uninstallation of the runtime on the nodes\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"uninstallDoneLabel\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"This specifies the label that the uninstall daemonset adds to nodes when the uninstallation is done\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"installType\",\n \"payloadImage\"\n ],\n \"type\": \"object\"\n },\n \"runtimeName\": {\n \"enum\": [\n \"kata\",\n \"enclave-cc\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"config\",\n \"runtimeName\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Cc Runtime\",\n \"type\": \"object\"\n}",
+ "version": "confidentialcontainers.org/v1beta1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Cc Runtime",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/confidential-containers/operator/main/config/crd/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Runtime"
+ },
+ "displayName": "Confidential Containers",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#b50000",
+ "secondaryColor": "#bc1a1a",
+ "shape": "circle",
+ "source_uri": "git://github.com/confidential-containers/operator/main/config/crd/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 106.39133 115.09025\" version=\"1.1\" id=\"svg201550\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" inkscape:version=\"1.2-dev (c68a1cf202, 2021-08-16)\" xmlns:sodipodi-0.dtd=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" sodipodi-0.dtd:docname=\"confidential-containers-logo-only.svg\" inkscape:export-filename=\"/home/tigert/Documents/design-temp/confidential-containers/logo/confidential-containers-logo-stacked.png\" inkscape:export-xdpi=\"88.529999\" inkscape:export-ydpi=\"88.529999\" xmlns:_xmlns=\"xmlns\" _xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" _xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" _xmlns:svg=\"http://www.w3.org/2000/svg\"\u003e\n \u003cnamedview xmlns=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" id=\"namedview201552\" pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1.0\" inkscape:pageshadow=\"2\" inkscape:pageopacity=\"0.0\" inkscape:pagecheckerboard=\"0\" inkscape:document-units=\"mm\" showgrid=\"false\" fit-margin-top=\"10\" fit-margin-left=\"10\" fit-margin-right=\"10\" lock-margins=\"true\" fit-margin-bottom=\"10\" inkscape:zoom=\"0.68589358\" inkscape:cx=\"1134.2868\" inkscape:cy=\"325.12332\" inkscape:window-width=\"3840\" inkscape:window-height=\"1136\" inkscape:window-x=\"0\" inkscape:window-y=\"27\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"layer1\"\u003e\u003c/namedview\u003e\n \u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs201547\"\u003e\u003c/defs\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" inkscape:label=\"Layer 1\" inkscape:groupmode=\"layer\" id=\"layer1\" transform=\"translate(463.92245,-100.21543)\"\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g203500\" transform=\"translate(-317.21501,-40.129347)\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"path1439\" style=\"opacity:1;fill:#ffffff;stroke:#005c94;stroke-width:21.8871;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000;stop-opacity:1\" inkscape:transform-center-x=\"-2.0702374e-05\" inkscape:transform-center-y=\"-3.2239512e-06\" transform=\"matrix(0.22489192,0,0,0.22489192,297.191,30.9734)\" d=\"m -1737.2913,942.67731 c -20.0469,0 -163.5883,-82.87365 -173.6118,-100.23483 -10.0235,-17.36118 -10.0235,-183.10848 0,-200.46967 10.0235,-17.36118 153.5649,-100.23483 173.6118,-100.23483 20.047,0 163.5884,82.87364 173.6119,100.23482 10.0234,17.36119 10.0234,183.10849 0,200.46967 -10.0235,17.36118 -153.5649,100.23484 -173.6119,100.23484 z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"path1441\" style=\"fill:#ff4d4d;fill-opacity:1;stroke-width:2.26361;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000\" d=\"m -93.5108,223.4354 c -0.7664,0 -21.7398,-12.109 -22.1229,-12.7727 -0.3832,-0.6638 -0.3832,-24.8819 0,-25.5456 0.3831,-0.6637 21.3565,-12.7727 22.1229,-12.7727 0.7664,0 21.7398,12.109 22.1231,12.7727 0.3831,0.6637 0.3831,24.8818 0,25.5456 -0.3833,0.6637 -21.3567,12.7727 -22.1231,12.7727 z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"path1449\" style=\"fill:#b50000;stroke-width:2.26362;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000\" d=\"m -71.3875,185.1171 c -0.7664,0 -21.7402,12.1088 -22.1233,12.7725 -0.3833,0.6637 -0.3833,24.882 0,25.5458 0.7662,0 21.74,-12.1088 22.1233,-12.7726 0.3831,-0.6637 0.3831,-24.8822 0,-25.5457 z\"\u003e\u003c/path\u003e\n \u003c/g\u003e\n \u003c/g\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 106.39133 115.09025\" version=\"1.1\" id=\"svg201550\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" inkscape:version=\"1.2-alpha1 (7125ea6, 2022-03-22)\" xmlns:sodipodi-0.dtd=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" sodipodi-0.dtd:docname=\"confidential-containers-icon-white.svg\" inkscape:export-filename=\"/home/tigert/Documents/design-temp/confidential-containers/logo/confidential-containers-icon-white.png\" inkscape:export-xdpi=\"301.07001\" inkscape:export-ydpi=\"301.07001\" xmlns:_xmlns=\"xmlns\" _xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" _xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" _xmlns:svg=\"http://www.w3.org/2000/svg\"\u003e\n \u003cnamedview xmlns=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" id=\"namedview201552\" pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1.0\" inkscape:pageshadow=\"2\" inkscape:pageopacity=\"0.0\" inkscape:pagecheckerboard=\"true\" inkscape:document-units=\"mm\" showgrid=\"false\" fit-margin-top=\"10\" fit-margin-left=\"10\" fit-margin-right=\"10\" lock-margins=\"true\" fit-margin-bottom=\"10\" inkscape:zoom=\"0.68589358\" inkscape:cx=\"246.39391\" inkscape:cy=\"330.95513\" inkscape:window-width=\"1950\" inkscape:window-height=\"1131\" inkscape:window-x=\"26\" inkscape:window-y=\"23\" inkscape:window-maximized=\"0\" inkscape:current-layer=\"layer1\" inkscape:deskcolor=\"#d1d1d1\"\u003e\u003c/namedview\u003e\n \u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs201547\"\u003e\u003c/defs\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" inkscape:label=\"Layer 1\" inkscape:groupmode=\"layer\" id=\"layer1\" transform=\"translate(463.92245,-100.21543)\"\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g203500\" transform=\"translate(-317.21501,-40.129347)\" style=\"fill:#ffffff\"\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g7413\" style=\"fill:#ffffff\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"color:#000000;fill:#ffffff;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none\" d=\"m -1737.291,530.79492 c -6.2759,0 -10.4909,1.87436 -16.8008,4.34961 -6.3099,2.47525 -13.7984,5.88144 -22.1836,9.98438 -16.7703,8.20587 -37.0577,19.19417 -57.0527,30.73828 -19.995,11.54411 -39.6548,23.61845 -55.1465,34.03906 -7.7458,5.2103 -14.4397,9.99381 -19.7383,14.2207 -5.2986,4.2269 -9.03,6.93993 -12.168,12.375 -3.1379,5.43509 -3.6215,10.02247 -4.6328,16.72461 -1.0113,6.70215 -1.8059,14.88988 -2.4453,24.20313 -1.2787,18.62648 -1.9062,41.68912 -1.9062,64.77734 0,23.08822 0.6275,46.15281 1.9062,64.7793 0.6394,9.31324 1.434,17.50098 2.4453,24.20312 1.0113,6.70215 1.4949,11.28953 4.6328,16.72461 3.138,5.43508 6.8694,8.14811 12.168,12.375 5.2986,4.22689 11.9925,9.0104 19.7383,14.22071 15.4917,10.42061 35.1515,22.49299 55.1465,34.0371 19.995,11.54412 40.2824,22.53436 57.0527,30.74024 8.3852,4.10294 15.8737,7.50717 22.1836,9.98242 6.3099,2.47525 10.5249,4.35156 16.8008,4.35156 6.2759,0 10.4909,-1.87631 16.8008,-4.35156 6.3099,-2.47525 13.7984,-5.87948 22.1836,-9.98242 16.7703,-8.20588 37.0577,-19.19612 57.0527,-30.74024 19.995,-11.54411 39.6548,-23.61649 55.1465,-34.0371 7.7458,-5.21031 14.4377,-9.99382 19.7363,-14.22071 5.2986,-4.22689 9.032,-6.93992 12.1699,-12.375 3.1379,-5.43507 3.6196,-10.02247 4.6309,-16.72461 1.0113,-6.70214 1.8079,-14.88988 2.4473,-24.20312 1.2786,-18.62648 1.9042,-41.69108 1.9042,-64.7793 0,-23.08822 -0.6256,-46.15086 -1.9042,-64.77734 -0.6394,-9.31324 -1.436,-17.50099 -2.4473,-24.20313 -1.0113,-6.70214 -1.493,-11.28953 -4.6309,-16.72461 -3.1379,-5.43507 -6.8713,-8.1481 -12.1699,-12.375 -5.2986,-4.22689 -11.9905,-9.0104 -19.7363,-14.2207 -15.4917,-10.42061 -35.1515,-22.49495 -55.1465,-34.03906 -19.995,-11.54411 -40.2824,-22.53241 -57.0527,-30.73828 -8.3852,-4.10294 -15.8737,-7.50913 -22.1836,-9.98438 -6.3099,-2.47525 -10.5249,-4.34961 -16.8008,-4.34961 z m 0,21.88672 c -1.2642,0 3.3923,0.71513 8.8086,2.83984 5.4163,2.12472 12.5091,5.32986 20.5566,9.26758 16.0951,7.87546 36.0775,18.68878 55.7266,30.03321 19.6491,11.34442 39.0071,23.24313 53.875,33.24414 7.4339,5.0005 13.7565,9.54163 18.3047,13.16992 4.5482,3.62829 7.4953,7.30377 6.8632,6.20898 -0.632,-1.09478 1.0773,3.29387 1.9454,9.04688 0.868,5.75301 1.6383,13.49731 2.2519,22.43554 1.2272,17.87647 1.8535,40.59045 1.8535,63.2793 0,22.68886 -0.6263,45.40283 -1.8535,63.2793 -0.6136,8.93823 -1.3839,16.68449 -2.2519,22.4375 -0.8681,5.75301 -2.5774,10.14166 -1.9454,9.04687 0.6321,-1.09478 -2.315,2.5807 -6.8632,6.20899 -4.5482,3.62829 -10.8708,8.16746 -18.3047,13.16797 -14.8679,10.00101 -34.2259,21.90166 -53.875,33.24609 -19.6491,11.34443 -39.6315,22.15775 -55.7266,30.0332 -8.0475,3.93773 -15.1403,7.14287 -20.5566,9.26758 -5.4163,2.12471 -10.0728,2.83984 -8.8086,2.83984 1.2642,0 -3.3923,-0.71513 -8.8086,-2.83984 -5.4163,-2.12471 -12.5091,-5.32985 -20.5567,-9.26758 -16.095,-7.87545 -36.0793,-18.68877 -55.7285,-30.0332 -19.6491,-11.34443 -39.0051,-23.24508 -53.873,-33.24609 -7.434,-5.00051 -13.7565,-9.53968 -18.3047,-13.16797 -4.5482,-3.62829 -7.4954,-7.30377 -6.8633,-6.20899 0.6321,1.0948 -1.0772,-3.29387 -1.9453,-9.04687 -0.8681,-5.753 -1.6384,-13.49927 -2.2519,-22.4375 -1.2272,-17.87647 -1.8536,-40.59045 -1.8536,-63.2793 0,-22.68885 0.6264,-45.40283 1.8536,-63.2793 0.6135,-8.93823 1.3838,-16.68254 2.2519,-22.43554 0.8681,-5.75301 2.5774,-10.14167 1.9453,-9.04688 -0.6321,1.09479 2.3151,-2.58069 6.8633,-6.20898 4.5482,-3.62829 10.8707,-8.16942 18.3047,-13.16992 14.8679,-10.00101 34.2239,-21.89972 53.873,-33.24414 19.6492,-11.34443 39.6335,-22.15775 55.7285,-30.03321 8.0476,-3.93773 15.1404,-7.14286 20.5567,-9.26758 5.4163,-2.12471 10.0728,-2.83984 8.8086,-2.83984 z\" id=\"path1439\" transform=\"matrix(0.22489192,0,0,0.22489192,297.191,30.9734)\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"path1441\" style=\"color:#000000;fill:#ffffff;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none\" d=\"M -93.511721 171.21266 C -93.908218 171.21266 -93.927995 171.27771 -94.033136 171.31653 C -94.138277 171.35533 -94.236576 171.39813 -94.349396 171.44934 C -94.575036 171.55173 -94.848554 171.68829 -95.181386 171.85913 C -95.847048 172.20082 -96.73789 172.68018 -97.783294 173.25595 C -99.874104 174.40748 -102.58248 175.94419 -105.28103 177.5022 C -107.97958 179.06021 -110.66635 180.63806 -112.709 181.87299 C -113.73033 182.49045 -114.59019 183.02023 -115.21892 183.42587 C -115.53328 183.62869 -115.78897 183.79893 -115.99045 183.94315 C -116.0912 184.01525 -116.17559 184.08077 -116.26175 184.15244 C -116.34795 184.22414 -116.41489 184.20742 -116.61315 184.55086 C -116.81142 184.89425 -116.76419 184.94426 -116.78317 185.05471 C -116.80217 185.16515 -116.81613 185.27299 -116.82813 185.39629 C -116.85223 185.6429 -116.87216 185.94866 -116.89066 186.32233 C -116.92756 187.06965 -116.95657 188.07828 -116.98057 189.27151 C -117.02877 191.65798 -117.05292 194.77459 -117.05292 197.89062 C -117.05292 201.00666 -117.02877 204.12119 -116.98057 206.50766 C -116.95647 207.70091 -116.92756 208.70951 -116.89066 209.45684 C -116.87216 209.83051 -116.85223 210.13834 -116.82813 210.38495 C -116.81603 210.50825 -116.80217 210.61402 -116.78317 210.72446 C -116.76417 210.8349 -116.81137 210.88497 -116.61315 211.22831 C -116.41489 211.57179 -116.34791 211.55506 -116.26175 211.62673 C -116.17555 211.69843 -116.0912 211.76391 -115.99045 211.83602 C -115.78897 211.98023 -115.53328 212.15048 -115.21892 212.3533 C -114.59019 212.75894 -113.73033 213.28872 -112.709 213.90618 C -110.66635 215.14111 -107.97958 216.71948 -105.28103 218.27749 C -102.58248 219.8355 -99.874104 221.37168 -97.783294 222.52322 C -96.73789 223.09898 -95.847048 223.57836 -95.181386 223.92004 C -94.848554 224.09088 -94.575036 224.22744 -94.349396 224.32983 C -94.236576 224.38103 -94.138277 224.42383 -94.033136 224.46264 C -93.927995 224.50144 -93.908218 224.56651 -93.511721 224.56651 C -93.115222 224.56651 -93.095446 224.50146 -92.990305 224.46264 C -92.885166 224.42384 -92.784798 224.38104 -92.671979 224.32983 C -92.446339 224.22744 -92.17282 224.09088 -91.839988 223.92004 C -91.174325 223.57836 -90.283487 223.09898 -89.23808 222.52322 C -87.147267 221.37168 -84.438903 219.8355 -81.740346 218.27749 C -79.041789 216.71948 -76.355052 215.14111 -74.312376 213.90618 C -73.291038 213.28872 -72.431711 212.75893 -71.802968 212.3533 C -71.488597 212.15048 -71.23293 211.98023 -71.031439 211.83602 C -70.930693 211.76392 -70.845771 211.69839 -70.759621 211.62673 C -70.673471 211.55503 -70.606466 211.57154 -70.408221 211.22831 C -70.210084 210.88499 -70.257184 210.83489 -70.238206 210.72446 C -70.219226 210.61403 -70.205317 210.50825 -70.193247 210.38495 C -70.169107 210.13835 -70.149179 209.8305 -70.130719 209.45684 C -70.093799 208.70951 -70.064862 207.7009 -70.040802 206.50766 C -69.992662 204.12119 -69.968972 201.00666 -69.968972 197.89062 C -69.968972 194.77459 -69.992662 191.65797 -70.040802 189.27151 C -70.064872 188.07828 -70.093809 187.06964 -70.130719 186.32233 C -70.149179 185.94867 -70.169107 185.64289 -70.193247 185.39629 C -70.205317 185.273 -70.219226 185.16514 -70.238206 185.05471 C -70.257186 184.94427 -70.210019 184.89423 -70.408221 184.55086 C -70.606466 184.20759 -70.67347 184.2241 -70.759621 184.15244 C -70.845771 184.08074 -70.930693 184.01525 -71.031439 183.94315 C -71.23293 183.79894 -71.488597 183.62869 -71.802968 183.42587 C -72.431711 183.02023 -73.291038 182.49045 -74.312376 181.87299 C -76.355052 180.63806 -79.041789 179.06021 -81.740346 177.5022 C -84.438903 175.94419 -87.147267 174.40748 -89.23808 173.25595 C -90.283487 172.68018 -91.174325 172.20082 -91.839988 171.85913 C -92.17282 171.68829 -92.446339 171.55173 -92.671979 171.44934 C -92.784798 171.39814 -92.885166 171.35534 -92.990305 171.31653 C -93.095446 171.27773 -93.115222 171.21266 -93.511721 171.21266 z M -93.511721 173.55877 C -93.347724 173.63527 -93.146772 173.73243 -92.873 173.87296 C -92.243492 174.19608 -91.364613 174.66843 -90.330003 175.23825 C -88.260784 176.37789 -85.559521 177.9106 -82.871026 179.4628 C -80.182532 181.015 -77.505979 182.58816 -75.484397 183.81034 C -74.473606 184.42142 -73.625915 184.94448 -73.031317 185.32808 C -72.824263 185.46166 -72.688279 185.55496 -72.556411 185.64589 C -77.107058 187.98366 -93.175791 197.30939 -93.510687 197.88958 C -93.845783 198.46982 -93.888108 217.05164 -93.637294 222.15994 C -93.781366 222.09064 -93.929133 222.01874 -94.148374 221.90621 C -94.777883 221.58309 -95.656764 221.11073 -96.691371 220.54092 C -98.760587 219.40127 -101.46187 217.87063 -104.15035 216.31843 C -106.83883 214.76624 -109.51543 213.19307 -111.53698 211.9709 C -112.54776 211.35982 -113.39549 210.8347 -113.99006 210.45109 C -114.24805 210.28464 -114.43405 210.16049 -114.58227 210.0568 C -114.59797 209.87655 -114.61358 209.6527 -114.62878 209.34573 C -114.66368 208.63899 -114.69283 207.64207 -114.71663 206.46115 C -114.76423 204.09932 -114.78897 200.99504 -114.78897 197.89062 C -114.78897 194.78621 -114.76433 191.68035 -114.71663 189.31853 C -114.69283 188.13762 -114.66368 187.14018 -114.62878 186.43344 C -114.61358 186.12659 -114.59797 185.90468 -114.58227 185.72444 C -114.43405 185.62074 -114.24811 185.49457 -113.99006 185.32808 C -113.39549 184.94448 -112.54776 184.42142 -111.53698 183.81034 C -109.51543 182.58816 -106.83883 181.015 -104.15035 179.4628 C -101.46187 177.9106 -98.760587 176.37789 -96.691371 175.23825 C -95.656764 174.66843 -94.777883 174.19608 -94.148374 173.87296 C -93.875278 173.73278 -93.675628 173.6353 -93.511721 173.55877 z \"\u003e\u003c/path\u003e\n \u003c/g\u003e\n \u003c/g\u003e\n \u003c/g\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v0.9.0"
+ },
+ "name": "confidential containers",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#b50000",
+ "secondaryColor": "#bc1a1a",
+ "shape": "circle",
+ "svgColor": "\u003csvg\n width=\"106.39133mm\"\n height=\"115.09025mm\"\n viewBox=\"0 0 106.39133 115.09025\"\n version=\"1.1\"\n id=\"svg201550\"\n inkscape:version=\"1.2-dev (c68a1cf202, 2021-08-16)\"\n sodipodi:docname=\"confidential-containers-logo-only.svg\"\n inkscape:export-filename=\"/home/tigert/Documents/design-temp/confidential-containers/logo/confidential-containers-logo-stacked.png\"\n inkscape:export-xdpi=\"88.529999\"\n inkscape:export-ydpi=\"88.529999\"\n xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\u003e\n \u003csodipodi:namedview\n id=\"namedview201552\"\n pagecolor=\"#ffffff\"\n bordercolor=\"#666666\"\n borderopacity=\"1.0\"\n inkscape:pageshadow=\"2\"\n inkscape:pageopacity=\"0.0\"\n inkscape:pagecheckerboard=\"0\"\n inkscape:document-units=\"mm\"\n showgrid=\"false\"\n fit-margin-top=\"10\"\n fit-margin-left=\"10\"\n fit-margin-right=\"10\"\n lock-margins=\"true\"\n fit-margin-bottom=\"10\"\n inkscape:zoom=\"0.68589358\"\n inkscape:cx=\"1134.2868\"\n inkscape:cy=\"325.12332\"\n inkscape:window-width=\"3840\"\n inkscape:window-height=\"1136\"\n inkscape:window-x=\"0\"\n inkscape:window-y=\"27\"\n inkscape:window-maximized=\"1\"\n inkscape:current-layer=\"layer1\" /\u003e\n \u003cdefs\n id=\"defs201547\" /\u003e\n \u003cg\n inkscape:label=\"Layer 1\"\n inkscape:groupmode=\"layer\"\n id=\"layer1\"\n transform=\"translate(463.92245,-100.21543)\"\u003e\n \u003cg\n id=\"g203500\"\n transform=\"translate(-317.21501,-40.129347)\"\u003e\n \u003cpath\n id=\"path1439\"\n style=\"opacity:1;fill:#ffffff;stroke:#005c94;stroke-width:21.8871;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000;stop-opacity:1\"\n inkscape:transform-center-x=\"-2.0702374e-05\"\n inkscape:transform-center-y=\"-3.2239512e-06\"\n transform=\"matrix(0.22489192,0,0,0.22489192,297.191,30.9734)\"\n d=\"m -1737.2913,942.67731 c -20.0469,0 -163.5883,-82.87365 -173.6118,-100.23483 -10.0235,-17.36118 -10.0235,-183.10848 0,-200.46967 10.0235,-17.36118 153.5649,-100.23483 173.6118,-100.23483 20.047,0 163.5884,82.87364 173.6119,100.23482 10.0234,17.36119 10.0234,183.10849 0,200.46967 -10.0235,17.36118 -153.5649,100.23484 -173.6119,100.23484 z\" /\u003e\n \u003cpath\n id=\"path1441\"\n style=\"fill:#ff4d4d;fill-opacity:1;stroke-width:2.26361;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000\"\n d=\"m -93.5108,223.4354 c -0.7664,0 -21.7398,-12.109 -22.1229,-12.7727 -0.3832,-0.6638 -0.3832,-24.8819 0,-25.5456 0.3831,-0.6637 21.3565,-12.7727 22.1229,-12.7727 0.7664,0 21.7398,12.109 22.1231,12.7727 0.3831,0.6637 0.3831,24.8818 0,25.5456 -0.3833,0.6637 -21.3567,12.7727 -22.1231,12.7727 z\" /\u003e\n \u003cpath\n id=\"path1449\"\n style=\"fill:#b50000;stroke-width:2.26362;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000\"\n d=\"m -71.3875,185.1171 c -0.7664,0 -21.7402,12.1088 -22.1233,12.7725 -0.3833,0.6637 -0.3833,24.882 0,25.5458 0.7662,0 21.74,-12.1088 22.1233,-12.7726 0.3831,-0.6637 0.3831,-24.8822 0,-25.5457 z\" /\u003e\n \u003c/g\u003e\n \u003c/g\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg\n width=\"106.39133mm\"\n height=\"115.09025mm\"\n viewBox=\"0 0 106.39133 115.09025\"\n version=\"1.1\"\n id=\"svg201550\"\n inkscape:version=\"1.2-alpha1 (7125ea6, 2022-03-22)\"\n sodipodi:docname=\"confidential-containers-icon-white.svg\"\n inkscape:export-filename=\"/home/tigert/Documents/design-temp/confidential-containers/logo/confidential-containers-icon-white.png\"\n inkscape:export-xdpi=\"301.07001\"\n inkscape:export-ydpi=\"301.07001\"\n xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\u003e\n \u003csodipodi:namedview\n id=\"namedview201552\"\n pagecolor=\"#ffffff\"\n bordercolor=\"#666666\"\n borderopacity=\"1.0\"\n inkscape:pageshadow=\"2\"\n inkscape:pageopacity=\"0.0\"\n inkscape:pagecheckerboard=\"true\"\n inkscape:document-units=\"mm\"\n showgrid=\"false\"\n fit-margin-top=\"10\"\n fit-margin-left=\"10\"\n fit-margin-right=\"10\"\n lock-margins=\"true\"\n fit-margin-bottom=\"10\"\n inkscape:zoom=\"0.68589358\"\n inkscape:cx=\"246.39391\"\n inkscape:cy=\"330.95513\"\n inkscape:window-width=\"1950\"\n inkscape:window-height=\"1131\"\n inkscape:window-x=\"26\"\n inkscape:window-y=\"23\"\n inkscape:window-maximized=\"0\"\n inkscape:current-layer=\"layer1\"\n inkscape:deskcolor=\"#d1d1d1\" /\u003e\n \u003cdefs\n id=\"defs201547\" /\u003e\n \u003cg\n inkscape:label=\"Layer 1\"\n inkscape:groupmode=\"layer\"\n id=\"layer1\"\n transform=\"translate(463.92245,-100.21543)\"\u003e\n \u003cg\n id=\"g203500\"\n transform=\"translate(-317.21501,-40.129347)\"\n style=\"fill:#ffffff\"\u003e\n \u003cg\n id=\"g7413\"\n style=\"fill:#ffffff\"\u003e\n \u003cpath\n style=\"color:#000000;fill:#ffffff;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none\"\n d=\"m -1737.291,530.79492 c -6.2759,0 -10.4909,1.87436 -16.8008,4.34961 -6.3099,2.47525 -13.7984,5.88144 -22.1836,9.98438 -16.7703,8.20587 -37.0577,19.19417 -57.0527,30.73828 -19.995,11.54411 -39.6548,23.61845 -55.1465,34.03906 -7.7458,5.2103 -14.4397,9.99381 -19.7383,14.2207 -5.2986,4.2269 -9.03,6.93993 -12.168,12.375 -3.1379,5.43509 -3.6215,10.02247 -4.6328,16.72461 -1.0113,6.70215 -1.8059,14.88988 -2.4453,24.20313 -1.2787,18.62648 -1.9062,41.68912 -1.9062,64.77734 0,23.08822 0.6275,46.15281 1.9062,64.7793 0.6394,9.31324 1.434,17.50098 2.4453,24.20312 1.0113,6.70215 1.4949,11.28953 4.6328,16.72461 3.138,5.43508 6.8694,8.14811 12.168,12.375 5.2986,4.22689 11.9925,9.0104 19.7383,14.22071 15.4917,10.42061 35.1515,22.49299 55.1465,34.0371 19.995,11.54412 40.2824,22.53436 57.0527,30.74024 8.3852,4.10294 15.8737,7.50717 22.1836,9.98242 6.3099,2.47525 10.5249,4.35156 16.8008,4.35156 6.2759,0 10.4909,-1.87631 16.8008,-4.35156 6.3099,-2.47525 13.7984,-5.87948 22.1836,-9.98242 16.7703,-8.20588 37.0577,-19.19612 57.0527,-30.74024 19.995,-11.54411 39.6548,-23.61649 55.1465,-34.0371 7.7458,-5.21031 14.4377,-9.99382 19.7363,-14.22071 5.2986,-4.22689 9.032,-6.93992 12.1699,-12.375 3.1379,-5.43507 3.6196,-10.02247 4.6309,-16.72461 1.0113,-6.70214 1.8079,-14.88988 2.4473,-24.20312 1.2786,-18.62648 1.9042,-41.69108 1.9042,-64.7793 0,-23.08822 -0.6256,-46.15086 -1.9042,-64.77734 -0.6394,-9.31324 -1.436,-17.50099 -2.4473,-24.20313 -1.0113,-6.70214 -1.493,-11.28953 -4.6309,-16.72461 -3.1379,-5.43507 -6.8713,-8.1481 -12.1699,-12.375 -5.2986,-4.22689 -11.9905,-9.0104 -19.7363,-14.2207 -15.4917,-10.42061 -35.1515,-22.49495 -55.1465,-34.03906 -19.995,-11.54411 -40.2824,-22.53241 -57.0527,-30.73828 -8.3852,-4.10294 -15.8737,-7.50913 -22.1836,-9.98438 -6.3099,-2.47525 -10.5249,-4.34961 -16.8008,-4.34961 z m 0,21.88672 c -1.2642,0 3.3923,0.71513 8.8086,2.83984 5.4163,2.12472 12.5091,5.32986 20.5566,9.26758 16.0951,7.87546 36.0775,18.68878 55.7266,30.03321 19.6491,11.34442 39.0071,23.24313 53.875,33.24414 7.4339,5.0005 13.7565,9.54163 18.3047,13.16992 4.5482,3.62829 7.4953,7.30377 6.8632,6.20898 -0.632,-1.09478 1.0773,3.29387 1.9454,9.04688 0.868,5.75301 1.6383,13.49731 2.2519,22.43554 1.2272,17.87647 1.8535,40.59045 1.8535,63.2793 0,22.68886 -0.6263,45.40283 -1.8535,63.2793 -0.6136,8.93823 -1.3839,16.68449 -2.2519,22.4375 -0.8681,5.75301 -2.5774,10.14166 -1.9454,9.04687 0.6321,-1.09478 -2.315,2.5807 -6.8632,6.20899 -4.5482,3.62829 -10.8708,8.16746 -18.3047,13.16797 -14.8679,10.00101 -34.2259,21.90166 -53.875,33.24609 -19.6491,11.34443 -39.6315,22.15775 -55.7266,30.0332 -8.0475,3.93773 -15.1403,7.14287 -20.5566,9.26758 -5.4163,2.12471 -10.0728,2.83984 -8.8086,2.83984 1.2642,0 -3.3923,-0.71513 -8.8086,-2.83984 -5.4163,-2.12471 -12.5091,-5.32985 -20.5567,-9.26758 -16.095,-7.87545 -36.0793,-18.68877 -55.7285,-30.0332 -19.6491,-11.34443 -39.0051,-23.24508 -53.873,-33.24609 -7.434,-5.00051 -13.7565,-9.53968 -18.3047,-13.16797 -4.5482,-3.62829 -7.4954,-7.30377 -6.8633,-6.20899 0.6321,1.0948 -1.0772,-3.29387 -1.9453,-9.04687 -0.8681,-5.753 -1.6384,-13.49927 -2.2519,-22.4375 -1.2272,-17.87647 -1.8536,-40.59045 -1.8536,-63.2793 0,-22.68885 0.6264,-45.40283 1.8536,-63.2793 0.6135,-8.93823 1.3838,-16.68254 2.2519,-22.43554 0.8681,-5.75301 2.5774,-10.14167 1.9453,-9.04688 -0.6321,1.09479 2.3151,-2.58069 6.8633,-6.20898 4.5482,-3.62829 10.8707,-8.16942 18.3047,-13.16992 14.8679,-10.00101 34.2239,-21.89972 53.873,-33.24414 19.6492,-11.34443 39.6335,-22.15775 55.7285,-30.03321 8.0476,-3.93773 15.1404,-7.14286 20.5567,-9.26758 5.4163,-2.12471 10.0728,-2.83984 8.8086,-2.83984 z\"\n id=\"path1439\"\n transform=\"matrix(0.22489192,0,0,0.22489192,297.191,30.9734)\" /\u003e\n \u003cpath\n id=\"path1441\"\n style=\"color:#000000;fill:#ffffff;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none\"\n d=\"M -93.511721 171.21266 C -93.908218 171.21266 -93.927995 171.27771 -94.033136 171.31653 C -94.138277 171.35533 -94.236576 171.39813 -94.349396 171.44934 C -94.575036 171.55173 -94.848554 171.68829 -95.181386 171.85913 C -95.847048 172.20082 -96.73789 172.68018 -97.783294 173.25595 C -99.874104 174.40748 -102.58248 175.94419 -105.28103 177.5022 C -107.97958 179.06021 -110.66635 180.63806 -112.709 181.87299 C -113.73033 182.49045 -114.59019 183.02023 -115.21892 183.42587 C -115.53328 183.62869 -115.78897 183.79893 -115.99045 183.94315 C -116.0912 184.01525 -116.17559 184.08077 -116.26175 184.15244 C -116.34795 184.22414 -116.41489 184.20742 -116.61315 184.55086 C -116.81142 184.89425 -116.76419 184.94426 -116.78317 185.05471 C -116.80217 185.16515 -116.81613 185.27299 -116.82813 185.39629 C -116.85223 185.6429 -116.87216 185.94866 -116.89066 186.32233 C -116.92756 187.06965 -116.95657 188.07828 -116.98057 189.27151 C -117.02877 191.65798 -117.05292 194.77459 -117.05292 197.89062 C -117.05292 201.00666 -117.02877 204.12119 -116.98057 206.50766 C -116.95647 207.70091 -116.92756 208.70951 -116.89066 209.45684 C -116.87216 209.83051 -116.85223 210.13834 -116.82813 210.38495 C -116.81603 210.50825 -116.80217 210.61402 -116.78317 210.72446 C -116.76417 210.8349 -116.81137 210.88497 -116.61315 211.22831 C -116.41489 211.57179 -116.34791 211.55506 -116.26175 211.62673 C -116.17555 211.69843 -116.0912 211.76391 -115.99045 211.83602 C -115.78897 211.98023 -115.53328 212.15048 -115.21892 212.3533 C -114.59019 212.75894 -113.73033 213.28872 -112.709 213.90618 C -110.66635 215.14111 -107.97958 216.71948 -105.28103 218.27749 C -102.58248 219.8355 -99.874104 221.37168 -97.783294 222.52322 C -96.73789 223.09898 -95.847048 223.57836 -95.181386 223.92004 C -94.848554 224.09088 -94.575036 224.22744 -94.349396 224.32983 C -94.236576 224.38103 -94.138277 224.42383 -94.033136 224.46264 C -93.927995 224.50144 -93.908218 224.56651 -93.511721 224.56651 C -93.115222 224.56651 -93.095446 224.50146 -92.990305 224.46264 C -92.885166 224.42384 -92.784798 224.38104 -92.671979 224.32983 C -92.446339 224.22744 -92.17282 224.09088 -91.839988 223.92004 C -91.174325 223.57836 -90.283487 223.09898 -89.23808 222.52322 C -87.147267 221.37168 -84.438903 219.8355 -81.740346 218.27749 C -79.041789 216.71948 -76.355052 215.14111 -74.312376 213.90618 C -73.291038 213.28872 -72.431711 212.75893 -71.802968 212.3533 C -71.488597 212.15048 -71.23293 211.98023 -71.031439 211.83602 C -70.930693 211.76392 -70.845771 211.69839 -70.759621 211.62673 C -70.673471 211.55503 -70.606466 211.57154 -70.408221 211.22831 C -70.210084 210.88499 -70.257184 210.83489 -70.238206 210.72446 C -70.219226 210.61403 -70.205317 210.50825 -70.193247 210.38495 C -70.169107 210.13835 -70.149179 209.8305 -70.130719 209.45684 C -70.093799 208.70951 -70.064862 207.7009 -70.040802 206.50766 C -69.992662 204.12119 -69.968972 201.00666 -69.968972 197.89062 C -69.968972 194.77459 -69.992662 191.65797 -70.040802 189.27151 C -70.064872 188.07828 -70.093809 187.06964 -70.130719 186.32233 C -70.149179 185.94867 -70.169107 185.64289 -70.193247 185.39629 C -70.205317 185.273 -70.219226 185.16514 -70.238206 185.05471 C -70.257186 184.94427 -70.210019 184.89423 -70.408221 184.55086 C -70.606466 184.20759 -70.67347 184.2241 -70.759621 184.15244 C -70.845771 184.08074 -70.930693 184.01525 -71.031439 183.94315 C -71.23293 183.79894 -71.488597 183.62869 -71.802968 183.42587 C -72.431711 183.02023 -73.291038 182.49045 -74.312376 181.87299 C -76.355052 180.63806 -79.041789 179.06021 -81.740346 177.5022 C -84.438903 175.94419 -87.147267 174.40748 -89.23808 173.25595 C -90.283487 172.68018 -91.174325 172.20082 -91.839988 171.85913 C -92.17282 171.68829 -92.446339 171.55173 -92.671979 171.44934 C -92.784798 171.39814 -92.885166 171.35534 -92.990305 171.31653 C -93.095446 171.27773 -93.115222 171.21266 -93.511721 171.21266 z M -93.511721 173.55877 C -93.347724 173.63527 -93.146772 173.73243 -92.873 173.87296 C -92.243492 174.19608 -91.364613 174.66843 -90.330003 175.23825 C -88.260784 176.37789 -85.559521 177.9106 -82.871026 179.4628 C -80.182532 181.015 -77.505979 182.58816 -75.484397 183.81034 C -74.473606 184.42142 -73.625915 184.94448 -73.031317 185.32808 C -72.824263 185.46166 -72.688279 185.55496 -72.556411 185.64589 C -77.107058 187.98366 -93.175791 197.30939 -93.510687 197.88958 C -93.845783 198.46982 -93.888108 217.05164 -93.637294 222.15994 C -93.781366 222.09064 -93.929133 222.01874 -94.148374 221.90621 C -94.777883 221.58309 -95.656764 221.11073 -96.691371 220.54092 C -98.760587 219.40127 -101.46187 217.87063 -104.15035 216.31843 C -106.83883 214.76624 -109.51543 213.19307 -111.53698 211.9709 C -112.54776 211.35982 -113.39549 210.8347 -113.99006 210.45109 C -114.24805 210.28464 -114.43405 210.16049 -114.58227 210.0568 C -114.59797 209.87655 -114.61358 209.6527 -114.62878 209.34573 C -114.66368 208.63899 -114.69283 207.64207 -114.71663 206.46115 C -114.76423 204.09932 -114.78897 200.99504 -114.78897 197.89062 C -114.78897 194.78621 -114.76433 191.68035 -114.71663 189.31853 C -114.69283 188.13762 -114.66368 187.14018 -114.62878 186.43344 C -114.61358 186.12659 -114.59797 185.90468 -114.58227 185.72444 C -114.43405 185.62074 -114.24811 185.49457 -113.99006 185.32808 C -113.39549 184.94448 -112.54776 184.42142 -111.53698 183.81034 C -109.51543 182.58816 -106.83883 181.015 -104.15035 179.4628 C -101.46187 177.9106 -98.760587 176.37789 -96.691371 175.23825 C -95.656764 174.66843 -94.777883 174.19608 -94.148374 173.87296 C -93.875278 173.73278 -93.675628 173.6353 -93.511721 173.55877 z \" /\u003e\n \u003c/g\u003e\n \u003c/g\u003e\n \u003c/g\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/confidential containers/v0.9.0/v1.0.0/model.json b/server/meshmodel/confidential containers/v0.9.0/v1.0.0/model.json
new file mode 100644
index 00000000000..a30d36fe4ae
--- /dev/null
+++ b/server/meshmodel/confidential containers/v0.9.0/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Runtime"
+ },
+ "displayName": "Confidential Containers",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#b50000",
+ "secondaryColor": "#bc1a1a",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 106.39133 115.09025\" version=\"1.1\" id=\"svg201550\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" inkscape:version=\"1.2-dev (c68a1cf202, 2021-08-16)\" xmlns:sodipodi-0.dtd=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" sodipodi-0.dtd:docname=\"confidential-containers-logo-only.svg\" inkscape:export-filename=\"/home/tigert/Documents/design-temp/confidential-containers/logo/confidential-containers-logo-stacked.png\" inkscape:export-xdpi=\"88.529999\" inkscape:export-ydpi=\"88.529999\" xmlns:_xmlns=\"xmlns\" _xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" _xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" _xmlns:svg=\"http://www.w3.org/2000/svg\"\u003e\n \u003cnamedview xmlns=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" id=\"namedview201552\" pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1.0\" inkscape:pageshadow=\"2\" inkscape:pageopacity=\"0.0\" inkscape:pagecheckerboard=\"0\" inkscape:document-units=\"mm\" showgrid=\"false\" fit-margin-top=\"10\" fit-margin-left=\"10\" fit-margin-right=\"10\" lock-margins=\"true\" fit-margin-bottom=\"10\" inkscape:zoom=\"0.68589358\" inkscape:cx=\"1134.2868\" inkscape:cy=\"325.12332\" inkscape:window-width=\"3840\" inkscape:window-height=\"1136\" inkscape:window-x=\"0\" inkscape:window-y=\"27\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"layer1\"\u003e\u003c/namedview\u003e\n \u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs201547\"\u003e\u003c/defs\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" inkscape:label=\"Layer 1\" inkscape:groupmode=\"layer\" id=\"layer1\" transform=\"translate(463.92245,-100.21543)\"\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g203500\" transform=\"translate(-317.21501,-40.129347)\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"path1439\" style=\"opacity:1;fill:#ffffff;stroke:#005c94;stroke-width:21.8871;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000;stop-opacity:1\" inkscape:transform-center-x=\"-2.0702374e-05\" inkscape:transform-center-y=\"-3.2239512e-06\" transform=\"matrix(0.22489192,0,0,0.22489192,297.191,30.9734)\" d=\"m -1737.2913,942.67731 c -20.0469,0 -163.5883,-82.87365 -173.6118,-100.23483 -10.0235,-17.36118 -10.0235,-183.10848 0,-200.46967 10.0235,-17.36118 153.5649,-100.23483 173.6118,-100.23483 20.047,0 163.5884,82.87364 173.6119,100.23482 10.0234,17.36119 10.0234,183.10849 0,200.46967 -10.0235,17.36118 -153.5649,100.23484 -173.6119,100.23484 z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"path1441\" style=\"fill:#ff4d4d;fill-opacity:1;stroke-width:2.26361;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000\" d=\"m -93.5108,223.4354 c -0.7664,0 -21.7398,-12.109 -22.1229,-12.7727 -0.3832,-0.6638 -0.3832,-24.8819 0,-25.5456 0.3831,-0.6637 21.3565,-12.7727 22.1229,-12.7727 0.7664,0 21.7398,12.109 22.1231,12.7727 0.3831,0.6637 0.3831,24.8818 0,25.5456 -0.3833,0.6637 -21.3567,12.7727 -22.1231,12.7727 z\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"path1449\" style=\"fill:#b50000;stroke-width:2.26362;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000\" d=\"m -71.3875,185.1171 c -0.7664,0 -21.7402,12.1088 -22.1233,12.7725 -0.3833,0.6637 -0.3833,24.882 0,25.5458 0.7662,0 21.74,-12.1088 22.1233,-12.7726 0.3831,-0.6637 0.3831,-24.8822 0,-25.5457 z\"\u003e\u003c/path\u003e\n \u003c/g\u003e\n \u003c/g\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 106.39133 115.09025\" version=\"1.1\" id=\"svg201550\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" inkscape:version=\"1.2-alpha1 (7125ea6, 2022-03-22)\" xmlns:sodipodi-0.dtd=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" sodipodi-0.dtd:docname=\"confidential-containers-icon-white.svg\" inkscape:export-filename=\"/home/tigert/Documents/design-temp/confidential-containers/logo/confidential-containers-icon-white.png\" inkscape:export-xdpi=\"301.07001\" inkscape:export-ydpi=\"301.07001\" xmlns:_xmlns=\"xmlns\" _xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" _xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" _xmlns:svg=\"http://www.w3.org/2000/svg\"\u003e\n \u003cnamedview xmlns=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" id=\"namedview201552\" pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1.0\" inkscape:pageshadow=\"2\" inkscape:pageopacity=\"0.0\" inkscape:pagecheckerboard=\"true\" inkscape:document-units=\"mm\" showgrid=\"false\" fit-margin-top=\"10\" fit-margin-left=\"10\" fit-margin-right=\"10\" lock-margins=\"true\" fit-margin-bottom=\"10\" inkscape:zoom=\"0.68589358\" inkscape:cx=\"246.39391\" inkscape:cy=\"330.95513\" inkscape:window-width=\"1950\" inkscape:window-height=\"1131\" inkscape:window-x=\"26\" inkscape:window-y=\"23\" inkscape:window-maximized=\"0\" inkscape:current-layer=\"layer1\" inkscape:deskcolor=\"#d1d1d1\"\u003e\u003c/namedview\u003e\n \u003cdefs xmlns=\"http://www.w3.org/2000/svg\" id=\"defs201547\"\u003e\u003c/defs\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" inkscape:label=\"Layer 1\" inkscape:groupmode=\"layer\" id=\"layer1\" transform=\"translate(463.92245,-100.21543)\"\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g203500\" transform=\"translate(-317.21501,-40.129347)\" style=\"fill:#ffffff\"\u003e\n \u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"g7413\" style=\"fill:#ffffff\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" style=\"color:#000000;fill:#ffffff;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none\" d=\"m -1737.291,530.79492 c -6.2759,0 -10.4909,1.87436 -16.8008,4.34961 -6.3099,2.47525 -13.7984,5.88144 -22.1836,9.98438 -16.7703,8.20587 -37.0577,19.19417 -57.0527,30.73828 -19.995,11.54411 -39.6548,23.61845 -55.1465,34.03906 -7.7458,5.2103 -14.4397,9.99381 -19.7383,14.2207 -5.2986,4.2269 -9.03,6.93993 -12.168,12.375 -3.1379,5.43509 -3.6215,10.02247 -4.6328,16.72461 -1.0113,6.70215 -1.8059,14.88988 -2.4453,24.20313 -1.2787,18.62648 -1.9062,41.68912 -1.9062,64.77734 0,23.08822 0.6275,46.15281 1.9062,64.7793 0.6394,9.31324 1.434,17.50098 2.4453,24.20312 1.0113,6.70215 1.4949,11.28953 4.6328,16.72461 3.138,5.43508 6.8694,8.14811 12.168,12.375 5.2986,4.22689 11.9925,9.0104 19.7383,14.22071 15.4917,10.42061 35.1515,22.49299 55.1465,34.0371 19.995,11.54412 40.2824,22.53436 57.0527,30.74024 8.3852,4.10294 15.8737,7.50717 22.1836,9.98242 6.3099,2.47525 10.5249,4.35156 16.8008,4.35156 6.2759,0 10.4909,-1.87631 16.8008,-4.35156 6.3099,-2.47525 13.7984,-5.87948 22.1836,-9.98242 16.7703,-8.20588 37.0577,-19.19612 57.0527,-30.74024 19.995,-11.54411 39.6548,-23.61649 55.1465,-34.0371 7.7458,-5.21031 14.4377,-9.99382 19.7363,-14.22071 5.2986,-4.22689 9.032,-6.93992 12.1699,-12.375 3.1379,-5.43507 3.6196,-10.02247 4.6309,-16.72461 1.0113,-6.70214 1.8079,-14.88988 2.4473,-24.20312 1.2786,-18.62648 1.9042,-41.69108 1.9042,-64.7793 0,-23.08822 -0.6256,-46.15086 -1.9042,-64.77734 -0.6394,-9.31324 -1.436,-17.50099 -2.4473,-24.20313 -1.0113,-6.70214 -1.493,-11.28953 -4.6309,-16.72461 -3.1379,-5.43507 -6.8713,-8.1481 -12.1699,-12.375 -5.2986,-4.22689 -11.9905,-9.0104 -19.7363,-14.2207 -15.4917,-10.42061 -35.1515,-22.49495 -55.1465,-34.03906 -19.995,-11.54411 -40.2824,-22.53241 -57.0527,-30.73828 -8.3852,-4.10294 -15.8737,-7.50913 -22.1836,-9.98438 -6.3099,-2.47525 -10.5249,-4.34961 -16.8008,-4.34961 z m 0,21.88672 c -1.2642,0 3.3923,0.71513 8.8086,2.83984 5.4163,2.12472 12.5091,5.32986 20.5566,9.26758 16.0951,7.87546 36.0775,18.68878 55.7266,30.03321 19.6491,11.34442 39.0071,23.24313 53.875,33.24414 7.4339,5.0005 13.7565,9.54163 18.3047,13.16992 4.5482,3.62829 7.4953,7.30377 6.8632,6.20898 -0.632,-1.09478 1.0773,3.29387 1.9454,9.04688 0.868,5.75301 1.6383,13.49731 2.2519,22.43554 1.2272,17.87647 1.8535,40.59045 1.8535,63.2793 0,22.68886 -0.6263,45.40283 -1.8535,63.2793 -0.6136,8.93823 -1.3839,16.68449 -2.2519,22.4375 -0.8681,5.75301 -2.5774,10.14166 -1.9454,9.04687 0.6321,-1.09478 -2.315,2.5807 -6.8632,6.20899 -4.5482,3.62829 -10.8708,8.16746 -18.3047,13.16797 -14.8679,10.00101 -34.2259,21.90166 -53.875,33.24609 -19.6491,11.34443 -39.6315,22.15775 -55.7266,30.0332 -8.0475,3.93773 -15.1403,7.14287 -20.5566,9.26758 -5.4163,2.12471 -10.0728,2.83984 -8.8086,2.83984 1.2642,0 -3.3923,-0.71513 -8.8086,-2.83984 -5.4163,-2.12471 -12.5091,-5.32985 -20.5567,-9.26758 -16.095,-7.87545 -36.0793,-18.68877 -55.7285,-30.0332 -19.6491,-11.34443 -39.0051,-23.24508 -53.873,-33.24609 -7.434,-5.00051 -13.7565,-9.53968 -18.3047,-13.16797 -4.5482,-3.62829 -7.4954,-7.30377 -6.8633,-6.20899 0.6321,1.0948 -1.0772,-3.29387 -1.9453,-9.04687 -0.8681,-5.753 -1.6384,-13.49927 -2.2519,-22.4375 -1.2272,-17.87647 -1.8536,-40.59045 -1.8536,-63.2793 0,-22.68885 0.6264,-45.40283 1.8536,-63.2793 0.6135,-8.93823 1.3838,-16.68254 2.2519,-22.43554 0.8681,-5.75301 2.5774,-10.14167 1.9453,-9.04688 -0.6321,1.09479 2.3151,-2.58069 6.8633,-6.20898 4.5482,-3.62829 10.8707,-8.16942 18.3047,-13.16992 14.8679,-10.00101 34.2239,-21.89972 53.873,-33.24414 19.6492,-11.34443 39.6335,-22.15775 55.7285,-30.03321 8.0476,-3.93773 15.1404,-7.14286 20.5567,-9.26758 5.4163,-2.12471 10.0728,-2.83984 8.8086,-2.83984 z\" id=\"path1439\" transform=\"matrix(0.22489192,0,0,0.22489192,297.191,30.9734)\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"path1441\" style=\"color:#000000;fill:#ffffff;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none\" d=\"M -93.511721 171.21266 C -93.908218 171.21266 -93.927995 171.27771 -94.033136 171.31653 C -94.138277 171.35533 -94.236576 171.39813 -94.349396 171.44934 C -94.575036 171.55173 -94.848554 171.68829 -95.181386 171.85913 C -95.847048 172.20082 -96.73789 172.68018 -97.783294 173.25595 C -99.874104 174.40748 -102.58248 175.94419 -105.28103 177.5022 C -107.97958 179.06021 -110.66635 180.63806 -112.709 181.87299 C -113.73033 182.49045 -114.59019 183.02023 -115.21892 183.42587 C -115.53328 183.62869 -115.78897 183.79893 -115.99045 183.94315 C -116.0912 184.01525 -116.17559 184.08077 -116.26175 184.15244 C -116.34795 184.22414 -116.41489 184.20742 -116.61315 184.55086 C -116.81142 184.89425 -116.76419 184.94426 -116.78317 185.05471 C -116.80217 185.16515 -116.81613 185.27299 -116.82813 185.39629 C -116.85223 185.6429 -116.87216 185.94866 -116.89066 186.32233 C -116.92756 187.06965 -116.95657 188.07828 -116.98057 189.27151 C -117.02877 191.65798 -117.05292 194.77459 -117.05292 197.89062 C -117.05292 201.00666 -117.02877 204.12119 -116.98057 206.50766 C -116.95647 207.70091 -116.92756 208.70951 -116.89066 209.45684 C -116.87216 209.83051 -116.85223 210.13834 -116.82813 210.38495 C -116.81603 210.50825 -116.80217 210.61402 -116.78317 210.72446 C -116.76417 210.8349 -116.81137 210.88497 -116.61315 211.22831 C -116.41489 211.57179 -116.34791 211.55506 -116.26175 211.62673 C -116.17555 211.69843 -116.0912 211.76391 -115.99045 211.83602 C -115.78897 211.98023 -115.53328 212.15048 -115.21892 212.3533 C -114.59019 212.75894 -113.73033 213.28872 -112.709 213.90618 C -110.66635 215.14111 -107.97958 216.71948 -105.28103 218.27749 C -102.58248 219.8355 -99.874104 221.37168 -97.783294 222.52322 C -96.73789 223.09898 -95.847048 223.57836 -95.181386 223.92004 C -94.848554 224.09088 -94.575036 224.22744 -94.349396 224.32983 C -94.236576 224.38103 -94.138277 224.42383 -94.033136 224.46264 C -93.927995 224.50144 -93.908218 224.56651 -93.511721 224.56651 C -93.115222 224.56651 -93.095446 224.50146 -92.990305 224.46264 C -92.885166 224.42384 -92.784798 224.38104 -92.671979 224.32983 C -92.446339 224.22744 -92.17282 224.09088 -91.839988 223.92004 C -91.174325 223.57836 -90.283487 223.09898 -89.23808 222.52322 C -87.147267 221.37168 -84.438903 219.8355 -81.740346 218.27749 C -79.041789 216.71948 -76.355052 215.14111 -74.312376 213.90618 C -73.291038 213.28872 -72.431711 212.75893 -71.802968 212.3533 C -71.488597 212.15048 -71.23293 211.98023 -71.031439 211.83602 C -70.930693 211.76392 -70.845771 211.69839 -70.759621 211.62673 C -70.673471 211.55503 -70.606466 211.57154 -70.408221 211.22831 C -70.210084 210.88499 -70.257184 210.83489 -70.238206 210.72446 C -70.219226 210.61403 -70.205317 210.50825 -70.193247 210.38495 C -70.169107 210.13835 -70.149179 209.8305 -70.130719 209.45684 C -70.093799 208.70951 -70.064862 207.7009 -70.040802 206.50766 C -69.992662 204.12119 -69.968972 201.00666 -69.968972 197.89062 C -69.968972 194.77459 -69.992662 191.65797 -70.040802 189.27151 C -70.064872 188.07828 -70.093809 187.06964 -70.130719 186.32233 C -70.149179 185.94867 -70.169107 185.64289 -70.193247 185.39629 C -70.205317 185.273 -70.219226 185.16514 -70.238206 185.05471 C -70.257186 184.94427 -70.210019 184.89423 -70.408221 184.55086 C -70.606466 184.20759 -70.67347 184.2241 -70.759621 184.15244 C -70.845771 184.08074 -70.930693 184.01525 -71.031439 183.94315 C -71.23293 183.79894 -71.488597 183.62869 -71.802968 183.42587 C -72.431711 183.02023 -73.291038 182.49045 -74.312376 181.87299 C -76.355052 180.63806 -79.041789 179.06021 -81.740346 177.5022 C -84.438903 175.94419 -87.147267 174.40748 -89.23808 173.25595 C -90.283487 172.68018 -91.174325 172.20082 -91.839988 171.85913 C -92.17282 171.68829 -92.446339 171.55173 -92.671979 171.44934 C -92.784798 171.39814 -92.885166 171.35534 -92.990305 171.31653 C -93.095446 171.27773 -93.115222 171.21266 -93.511721 171.21266 z M -93.511721 173.55877 C -93.347724 173.63527 -93.146772 173.73243 -92.873 173.87296 C -92.243492 174.19608 -91.364613 174.66843 -90.330003 175.23825 C -88.260784 176.37789 -85.559521 177.9106 -82.871026 179.4628 C -80.182532 181.015 -77.505979 182.58816 -75.484397 183.81034 C -74.473606 184.42142 -73.625915 184.94448 -73.031317 185.32808 C -72.824263 185.46166 -72.688279 185.55496 -72.556411 185.64589 C -77.107058 187.98366 -93.175791 197.30939 -93.510687 197.88958 C -93.845783 198.46982 -93.888108 217.05164 -93.637294 222.15994 C -93.781366 222.09064 -93.929133 222.01874 -94.148374 221.90621 C -94.777883 221.58309 -95.656764 221.11073 -96.691371 220.54092 C -98.760587 219.40127 -101.46187 217.87063 -104.15035 216.31843 C -106.83883 214.76624 -109.51543 213.19307 -111.53698 211.9709 C -112.54776 211.35982 -113.39549 210.8347 -113.99006 210.45109 C -114.24805 210.28464 -114.43405 210.16049 -114.58227 210.0568 C -114.59797 209.87655 -114.61358 209.6527 -114.62878 209.34573 C -114.66368 208.63899 -114.69283 207.64207 -114.71663 206.46115 C -114.76423 204.09932 -114.78897 200.99504 -114.78897 197.89062 C -114.78897 194.78621 -114.76433 191.68035 -114.71663 189.31853 C -114.69283 188.13762 -114.66368 187.14018 -114.62878 186.43344 C -114.61358 186.12659 -114.59797 185.90468 -114.58227 185.72444 C -114.43405 185.62074 -114.24811 185.49457 -113.99006 185.32808 C -113.39549 184.94448 -112.54776 184.42142 -111.53698 183.81034 C -109.51543 182.58816 -106.83883 181.015 -104.15035 179.4628 C -101.46187 177.9106 -98.760587 176.37789 -96.691371 175.23825 C -95.656764 174.66843 -94.777883 174.19608 -94.148374 173.87296 C -93.875278 173.73278 -93.675628 173.6353 -93.511721 173.55877 z \"\u003e\u003c/path\u003e\n \u003c/g\u003e\n \u003c/g\u003e\n \u003c/g\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v0.9.0"
+ },
+ "name": "confidential containers",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/CompositeResourceDefinition.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/CompositeResourceDefinition.json
new file mode 100644
index 00000000000..5fc80e0005f
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/CompositeResourceDefinition.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "CompositeResourceDefinition",
+ "schema": "{\n \"description\": \"A CompositeResourceDefinition defines the schema for a new custom Kubernetes\\nAPI.\\n\\n\\nRead the Crossplane documentation for\\n[more information about CustomResourceDefinitions](https://docs.crossplane.io/latest/concepts/composite-resource-definitions).\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CompositeResourceDefinitionSpec specifies the desired state of the definition.\",\n \"properties\": {\n \"claimNames\": {\n \"description\": \"ClaimNames specifies the names of an optional composite resource claim.\\nWhen claim names are specified Crossplane will create a namespaced\\n'composite resource claim' CRD that corresponds to the defined composite\\nresource. This composite resource claim acts as a namespaced proxy for\\nthe composite resource; creating, updating, or deleting the claim will\\ncreate, update, or delete a corresponding composite resource. You may add\\nclaim names to an existing CompositeResourceDefinition, but they cannot\\nbe changed or removed once they have been set.\",\n \"properties\": {\n \"categories\": {\n \"description\": \"categories is a list of grouped resources this custom resource belongs to (e.g. 'all').\\nThis is published in API discovery documents, and used by clients to support invocations like\\n`kubectl get all`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"kind\": {\n \"description\": \"kind is the serialized kind of the resource. It is normally CamelCase and singular.\\nCustom resource instances will use this value as the `kind` attribute in API calls.\",\n \"type\": \"string\"\n },\n \"listKind\": {\n \"description\": \"listKind is the serialized kind of the list for this resource. Defaults to \\\"`kind`List\\\".\",\n \"type\": \"string\"\n },\n \"plural\": {\n \"description\": \"plural is the plural name of the resource to serve.\\nThe custom resources are served under `/apis/\\u003cgroup\\u003e/\\u003cversion\\u003e/.../\\u003cplural\\u003e`.\\nMust match the name of the CustomResourceDefinition (in the form `\\u003cnames.plural\\u003e.\\u003cgroup\\u003e`).\\nMust be all lowercase.\",\n \"type\": \"string\"\n },\n \"shortNames\": {\n \"description\": \"shortNames are short names for the resource, exposed in API discovery documents,\\nand used by clients to support invocations like `kubectl get \\u003cshortname\\u003e`.\\nIt must be all lowercase.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"singular\": {\n \"description\": \"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"plural\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Value is immutable\",\n \"rule\": \"self == oldSelf\"\n }\n ]\n },\n \"connectionSecretKeys\": {\n \"description\": \"ConnectionSecretKeys is the list of keys that will be exposed to the end\\nuser of the defined kind.\\nIf the list is empty, all keys will be published.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"conversion\": {\n \"description\": \"Conversion defines all conversion settings for the defined Composite resource.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"strategy specifies how custom resources are converted between versions. Allowed values are:\\n- `\\\"None\\\"`: The converter only change the apiVersion and would not touch any other field in the custom resource.\\n- `\\\"Webhook\\\"`: API Server will call to an external webhook to do the conversion. Additional information\\n is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set.\",\n \"type\": \"string\"\n },\n \"webhook\": {\n \"description\": \"webhook describes how to call the conversion webhook. Required when `strategy` is set to `\\\"Webhook\\\"`.\",\n \"properties\": {\n \"clientConfig\": {\n \"description\": \"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.\",\n \"properties\": {\n \"caBundle\": {\n \"description\": \"caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.\\nIf unspecified, system trust roots on the apiserver are used.\",\n \"format\": \"byte\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"service is a reference to the service for this webhook. Either\\nservice or url must be specified.\\n\\n\\nIf the webhook is running within the cluster, then you should use `service`.\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is the name of the service.\\nRequired\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the service.\\nRequired\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is an optional URL path at which the webhook will be contacted.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"port is an optional service port at which the webhook will be contacted.\\n`port` should be a valid port number (1-65535, inclusive).\\nDefaults to 443 for backward compatibility.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\",\n \"namespace\"\n ],\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"url gives the location of the webhook, in standard URL form\\n(`scheme://host:port/path`). Exactly one of `url` or `service`\\nmust be specified.\\n\\n\\nThe `host` should not refer to a service running in the cluster; use\\nthe `service` field instead. The host might be resolved via external\\nDNS in some apiservers (e.g., `kube-apiserver` cannot resolve\\nin-cluster DNS as that would be a layering violation). `host` may\\nalso be an IP address.\\n\\n\\nPlease note that using `localhost` or `127.0.0.1` as a `host` is\\nrisky unless you take great care to run this webhook on all hosts\\nwhich run an apiserver which might need to make calls to this\\nwebhook. Such installs are likely to be non-portable, i.e., not easy\\nto turn up in a new cluster.\\n\\n\\nThe scheme must be \\\"https\\\"; the URL must begin with \\\"https://\\\".\\n\\n\\nA path is optional, and if present may be any string permissible in\\na URL. You may use the path to pass an arbitrary string to the\\nwebhook, for example, a cluster identifier.\\n\\n\\nAttempting to use a user or basic auth e.g. \\\"user:password@\\\" is not\\nallowed. Fragments (\\\"#...\\\") and query parameters (\\\"?...\\\") are not\\nallowed, either.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"conversionReviewVersions\": {\n \"description\": \"conversionReviewVersions is an ordered list of preferred `ConversionReview`\\nversions the Webhook expects. The API server will use the first version in\\nthe list which it supports. If none of the versions specified in this list\\nare supported by API server, conversion will fail for the custom resource.\\nIf a persisted Webhook configuration specifies allowed versions and does not\\ninclude any versions known to the API Server, calls to the webhook will fail.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"conversionReviewVersions\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n \"defaultCompositeDeletePolicy\": {\n \"default\": \"Background\",\n \"description\": \"DefaultCompositeDeletePolicy is the policy used when deleting the Composite\\nthat is associated with the Claim if no policy has been specified.\",\n \"enum\": [\n \"Background\",\n \"Foreground\"\n ],\n \"type\": \"string\"\n },\n \"defaultCompositionRef\": {\n \"description\": \"DefaultCompositionRef refers to the Composition resource that will be used\\nin case no composition selector is given.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the Composition.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"defaultCompositionUpdatePolicy\": {\n \"default\": \"Automatic\",\n \"description\": \"DefaultCompositionUpdatePolicy is the policy used when updating composites after a new\\nComposition Revision has been created if no policy has been specified on the composite.\",\n \"enum\": [\n \"Automatic\",\n \"Manual\"\n ],\n \"type\": \"string\"\n },\n \"enforcedCompositionRef\": {\n \"description\": \"EnforcedCompositionRef refers to the Composition resource that will be used\\nby all composite instances whose schema is defined by this definition.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the Composition.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Value is immutable\",\n \"rule\": \"self == oldSelf\"\n }\n ]\n },\n \"group\": {\n \"description\": \"Group specifies the API group of the defined composite resource.\\nComposite resources are served under `/apis/\\u003cgroup\\u003e/...`. Must match the\\nname of the XRD (in the form `\\u003cnames.plural\\u003e.\\u003cgroup\\u003e`).\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Value is immutable\",\n \"rule\": \"self == oldSelf\"\n }\n ]\n },\n \"metadata\": {\n \"description\": \"Metadata specifies the desired metadata for the defined composite resource and claim CRD's.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\\nand services.\\nThese labels are added to the composite resource and claim CRD's in addition\\nto any labels defined by `CompositionResourceDefinition` `metadata.labels`.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"names\": {\n \"description\": \"Names specifies the resource and kind names of the defined composite\\nresource.\",\n \"properties\": {\n \"categories\": {\n \"description\": \"categories is a list of grouped resources this custom resource belongs to (e.g. 'all').\\nThis is published in API discovery documents, and used by clients to support invocations like\\n`kubectl get all`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"kind\": {\n \"description\": \"kind is the serialized kind of the resource. It is normally CamelCase and singular.\\nCustom resource instances will use this value as the `kind` attribute in API calls.\",\n \"type\": \"string\"\n },\n \"listKind\": {\n \"description\": \"listKind is the serialized kind of the list for this resource. Defaults to \\\"`kind`List\\\".\",\n \"type\": \"string\"\n },\n \"plural\": {\n \"description\": \"plural is the plural name of the resource to serve.\\nThe custom resources are served under `/apis/\\u003cgroup\\u003e/\\u003cversion\\u003e/.../\\u003cplural\\u003e`.\\nMust match the name of the CustomResourceDefinition (in the form `\\u003cnames.plural\\u003e.\\u003cgroup\\u003e`).\\nMust be all lowercase.\",\n \"type\": \"string\"\n },\n \"shortNames\": {\n \"description\": \"shortNames are short names for the resource, exposed in API discovery documents,\\nand used by clients to support invocations like `kubectl get \\u003cshortname\\u003e`.\\nIt must be all lowercase.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"singular\": {\n \"description\": \"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"plural\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Value is immutable\",\n \"rule\": \"self == oldSelf\"\n }\n ]\n },\n \"versions\": {\n \"description\": \"Versions is the list of all API versions of the defined composite\\nresource. Version names are used to compute the order in which served\\nversions are listed in API discovery. If the version string is\\n\\\"kube-like\\\", it will sort above non \\\"kube-like\\\" version strings, which\\nare ordered lexicographically. \\\"Kube-like\\\" versions start with a \\\"v\\\",\\nthen are followed by a number (the major version), then optionally the\\nstring \\\"alpha\\\" or \\\"beta\\\" and another number (the minor version). These\\nare sorted first by GA \\u003e beta \\u003e alpha (where GA is a version with no\\nsuffix such as beta or alpha), and then by comparing major version, then\\nminor version. An example sorted list of versions: v10, v2, v1, v11beta2,\\nv10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.\",\n \"items\": {\n \"description\": \"CompositeResourceDefinitionVersion describes a version of an XR.\",\n \"properties\": {\n \"additionalPrinterColumns\": {\n \"description\": \"AdditionalPrinterColumns specifies additional columns returned in Table\\noutput. If no columns are specified, a single column displaying the age\\nof the custom resource is used. See the following link for details:\\nhttps://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables\",\n \"items\": {\n \"description\": \"CustomResourceColumnDefinition specifies a column for server side printing.\",\n \"properties\": {\n \"description\": {\n \"description\": \"description is a human readable description of this column.\",\n \"type\": \"string\"\n },\n \"format\": {\n \"description\": \"format is an optional OpenAPI type definition for this column. The 'name' format is applied\\nto the primary identifier column to assist in clients identifying column is the resource name.\\nSee https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.\",\n \"type\": \"string\"\n },\n \"jsonPath\": {\n \"description\": \"jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against\\neach custom resource to produce the value for this column.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is a human readable name for the column.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"priority is an integer defining the relative importance of this column compared to others. Lower\\nnumbers are considered higher priority. Columns that may be omitted in limited space scenarios\\nshould be given a priority greater than 0.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"description\": \"type is an OpenAPI type definition for this column.\\nSee https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"jsonPath\",\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"deprecated\": {\n \"description\": \"The deprecated field specifies that this version is deprecated and should\\nnot be used.\",\n \"type\": \"boolean\"\n },\n \"deprecationWarning\": {\n \"description\": \"DeprecationWarning specifies the message that should be shown to the user\\nwhen using this version.\",\n \"maxLength\": 256,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of this version, e.g. “v1”, “v2beta1”, etc. Composite resources are\\nserved under this version at `/apis/\\u003cgroup\\u003e/\\u003cversion\\u003e/...` if `served` is\\ntrue.\",\n \"type\": \"string\"\n },\n \"referenceable\": {\n \"description\": \"Referenceable specifies that this version may be referenced by a\\nComposition in order to configure which resources an XR may be composed\\nof. Exactly one version must be marked as referenceable; all Compositions\\nmust target only the referenceable version. The referenceable version\\nmust be served. It's mapped to the CRD's `spec.versions[*].storage` field.\",\n \"type\": \"boolean\"\n },\n \"schema\": {\n \"description\": \"Schema describes the schema used for validation, pruning, and defaulting\\nof this version of the defined composite resource. Fields required by all\\ncomposite resources will be injected into this schema automatically, and\\nwill override equivalently named fields in this schema. Omitting this\\nschema results in a schema that contains only the fields required by all\\ncomposite resources.\",\n \"properties\": {\n \"openAPIV3Schema\": {\n \"description\": \"OpenAPIV3Schema is the OpenAPI v3 schema to use for validation and\\npruning.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"served\": {\n \"description\": \"Served specifies that this version should be served via REST APIs.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"name\",\n \"referenceable\",\n \"served\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"group\",\n \"names\",\n \"versions\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Composite Resource Definition\",\n \"type\": \"object\"\n}",
+ "version": "apiextensions.crossplane.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Composite Resource Definition",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Composition.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Composition.json
new file mode 100644
index 00000000000..088a309b0aa
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Composition.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Composition",
+ "schema": "{\n \"description\": \"A Composition defines a collection of managed resources or functions that\\nCrossplane uses to create and manage new composite resources.\\n\\n\\nRead the Crossplane documentation for\\n[more information about Compositions](https://docs.crossplane.io/latest/concepts/compositions).\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CompositionSpec specifies desired state of a composition.\",\n \"properties\": {\n \"compositeTypeRef\": {\n \"description\": \"CompositeTypeRef specifies the type of composite resource that this\\ncomposition is compatible with.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion of the type.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Value is immutable\",\n \"rule\": \"self == oldSelf\"\n }\n ]\n },\n \"environment\": {\n \"description\": \"Environment configures the environment in which resources are rendered.\\n\\n\\nTHIS IS AN ALPHA FIELD. Do not use it in production. It is not honored\\nunless the relevant Crossplane feature flag is enabled, and may be\\nchanged or removed without notice.\",\n \"properties\": {\n \"defaultData\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"description\": \"DefaultData statically defines the initial state of the environment.\\nIt has the same schema-less structure as the data field in\\nenvironment configs.\\nIt is overwritten by the selected environment configs.\",\n \"type\": \"object\"\n },\n \"environmentConfigs\": {\n \"description\": \"EnvironmentConfigs selects a list of `EnvironmentConfig`s. The resolved\\nresources are stored in the composite resource at\\n`spec.environmentConfigRefs` and is only updated if it is null.\\n\\n\\nThe list of references is used to compute an in-memory environment at\\ncompose time. The data of all object is merged in the order they are\\nlisted, meaning the values of EnvironmentConfigs with a larger index take\\npriority over ones with smaller indices.\\n\\n\\nThe computed environment can be accessed in a composition using\\n`FromEnvironmentFieldPath` and `CombineFromEnvironment` patches.\",\n \"items\": {\n \"description\": \"EnvironmentSource selects a EnvironmentConfig resource.\",\n \"properties\": {\n \"ref\": {\n \"description\": \"Ref is a named reference to a single EnvironmentConfig.\\nEither Ref or Selector is required.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the object.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"Selector selects EnvironmentConfig(s) via labels.\",\n \"properties\": {\n \"matchLabels\": {\n \"description\": \"MatchLabels ensures an object with matching labels is selected.\",\n \"items\": {\n \"description\": \"An EnvironmentSourceSelectorLabelMatcher acts like a k8s label selector but\\ncan draw the label value from a different path.\",\n \"properties\": {\n \"fromFieldPathPolicy\": {\n \"default\": \"Required\",\n \"description\": \"FromFieldPathPolicy specifies the policy for the valueFromFieldPath.\\nThe default is Required, meaning that an error will be returned if the\\nfield is not found in the composite resource.\\nOptional means that if the field is not found in the composite resource,\\nthat label pair will just be skipped. N.B. other specified label\\nmatchers will still be used to retrieve the desired\\nenvironment config, if any.\",\n \"enum\": [\n \"Optional\",\n \"Required\"\n ],\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key of the label to match.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"FromCompositeFieldPath\",\n \"description\": \"Type specifies where the value for a label comes from.\",\n \"enum\": [\n \"FromCompositeFieldPath\",\n \"Value\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value specifies a literal label value.\",\n \"type\": \"string\"\n },\n \"valueFromFieldPath\": {\n \"description\": \"ValueFromFieldPath specifies the field path to look for the label value.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"maxMatch\": {\n \"description\": \"MaxMatch specifies the number of extracted EnvironmentConfigs in Multiple mode, extracts all if nil.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"minMatch\": {\n \"description\": \"MinMatch specifies the required minimum of extracted EnvironmentConfigs in Multiple mode.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"mode\": {\n \"default\": \"Single\",\n \"description\": \"Mode specifies retrieval strategy: \\\"Single\\\" or \\\"Multiple\\\".\",\n \"enum\": [\n \"Single\",\n \"Multiple\"\n ],\n \"type\": \"string\"\n },\n \"sortByFieldPath\": {\n \"default\": \"metadata.name\",\n \"description\": \"SortByFieldPath is the path to the field based on which list of EnvironmentConfigs is alphabetically sorted.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"Reference\",\n \"description\": \"Type specifies the way the EnvironmentConfig is selected.\\nDefault is `Reference`\",\n \"enum\": [\n \"Reference\",\n \"Selector\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"patches\": {\n \"description\": \"Patches is a list of environment patches that are executed before a\\ncomposition's resources are composed.\",\n \"items\": {\n \"description\": \"EnvironmentPatch is a patch for a Composition environment.\",\n \"properties\": {\n \"combine\": {\n \"description\": \"Combine is the patch configuration for a CombineFromComposite or\\nCombineToComposite patch.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Strategy defines the strategy to use to combine the input variable values.\\nCurrently only string is supported.\",\n \"enum\": [\n \"string\"\n ],\n \"type\": \"string\"\n },\n \"string\": {\n \"description\": \"String declares that input variables should be combined into a single\\nstring, using the relevant settings for formatting purposes.\",\n \"properties\": {\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fmt\"\n ],\n \"type\": \"object\"\n },\n \"variables\": {\n \"description\": \"Variables are the list of variables whose values will be retrieved and\\ncombined.\",\n \"items\": {\n \"description\": \"A CombineVariable defines the source of a value that is combined with\\nothers to form and patch an output value. Currently, this only supports\\nretrieving values from a field path.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the source whose value is\\nto be used as input.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fromFieldPath\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"strategy\",\n \"variables\"\n ],\n \"type\": \"object\"\n },\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the resource whose value is\\nto be used as input. Required when type is FromCompositeFieldPath or\\nToCompositeFieldPath.\",\n \"type\": \"string\"\n },\n \"policy\": {\n \"description\": \"Policy configures the specifics of patching behaviour.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath specifies how to patch from a field path. The default is\\n'Optional', which means the patch will be a no-op if the specified\\nfromFieldPath does not exist. Use 'Required' if the patch should fail if\\nthe specified path does not exist.\",\n \"enum\": [\n \"Optional\",\n \"Required\"\n ],\n \"type\": \"string\"\n },\n \"mergeOptions\": {\n \"description\": \"MergeOptions Specifies merge options on a field path.\",\n \"properties\": {\n \"appendSlice\": {\n \"description\": \"Specifies that already existing elements in a merged slice should be preserved\",\n \"type\": \"boolean\"\n },\n \"keepMapValues\": {\n \"description\": \"Specifies that already existing values in a merged map should be preserved\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"toFieldPath\": {\n \"description\": \"ToFieldPath is the path of the field on the resource whose value will\\nbe changed with the result of transforms. Leave empty if you'd like to\\npropagate to the same path as fromFieldPath.\",\n \"type\": \"string\"\n },\n \"transforms\": {\n \"description\": \"Transforms are the list of functions that are used as a FIFO pipe for the\\ninput to be transformed.\",\n \"items\": {\n \"description\": \"Transform is a unit of process whose input is transformed into an output with\\nthe supplied configuration.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Convert is used to cast the input into the given output type.\",\n \"properties\": {\n \"format\": {\n \"description\": \"The expected input format.\\n\\n\\n* `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity).\\nOnly used during `string -\\u003e float64` conversions.\\n* `json` - parses the input as a JSON string.\\nOnly used during `string -\\u003e object` or `string -\\u003e list` conversions.\\n\\n\\nIf this property is null, the default conversion is applied.\",\n \"enum\": [\n \"none\",\n \"quantity\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"toType\": {\n \"description\": \"ToType is the type of the output of this transform.\",\n \"enum\": [\n \"string\",\n \"int\",\n \"int64\",\n \"bool\",\n \"float64\",\n \"object\",\n \"array\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"toType\"\n ],\n \"type\": \"object\"\n },\n \"map\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"description\": \"Map uses the input as a key in the given map and returns the value.\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is a more complex version of Map that matches a list of patterns.\",\n \"properties\": {\n \"fallbackTo\": {\n \"default\": \"Value\",\n \"description\": \"Determines to what value the transform should fallback if no pattern matches.\",\n \"enum\": [\n \"Value\",\n \"Input\"\n ],\n \"type\": \"string\"\n },\n \"fallbackValue\": {\n \"description\": \"The fallback value that should be returned by the transform if now pattern\\nmatches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"patterns\": {\n \"description\": \"The patterns that should be tested against the input string.\\nPatterns are tested in order. The value of the first match is used as\\nresult of this transform.\",\n \"items\": {\n \"description\": \"MatchTransformPattern is a transform that returns the value that matches a\\npattern.\",\n \"properties\": {\n \"literal\": {\n \"description\": \"Literal exactly matches the input string (case sensitive).\\nIs required if `type` is `literal`.\",\n \"type\": \"string\"\n },\n \"regexp\": {\n \"description\": \"Regexp to match against the input string.\\nIs required if `type` is `regexp`.\",\n \"type\": \"string\"\n },\n \"result\": {\n \"description\": \"The value that is used as result of the transform if the pattern matches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"literal\",\n \"description\": \"Type specifies how the pattern matches the input.\\n\\n\\n* `literal` - the pattern value has to exactly match (case sensitive) the\\ninput string. This is the default.\\n\\n\\n* `regexp` - the pattern treated as a regular expression against\\nwhich the input string is tested. Crossplane will throw an error if the\\nkey is not a valid regexp.\",\n \"enum\": [\n \"literal\",\n \"regexp\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"result\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"math\": {\n \"description\": \"Math is used to transform the input via mathematical operations such as\\nmultiplication.\",\n \"properties\": {\n \"clampMax\": {\n \"description\": \"ClampMax makes sure that the value is not bigger than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"clampMin\": {\n \"description\": \"ClampMin makes sure that the value is not smaller than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"multiply\": {\n \"description\": \"Multiply the value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"Multiply\",\n \"description\": \"Type of the math transform to be run.\",\n \"enum\": [\n \"Multiply\",\n \"ClampMin\",\n \"ClampMax\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"string\": {\n \"description\": \"String is used to transform the input into a string or a different kind\\nof string. Note that the input does not necessarily need to be a string.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Optional conversion method to be specified.\\n`ToUpper` and `ToLower` change the letter case of the input string.\\n`ToBase64` and `FromBase64` perform a base64 conversion based on the input string.\\n`ToJson` converts any input value into its raw JSON representation.\\n`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input\\nconverted to JSON.\\n`ToAdler32` generate a addler32 hash based on the input string.\",\n \"enum\": [\n \"ToUpper\",\n \"ToLower\",\n \"ToBase64\",\n \"FromBase64\",\n \"ToJson\",\n \"ToSha1\",\n \"ToSha256\",\n \"ToSha512\",\n \"ToAdler32\"\n ],\n \"type\": \"string\"\n },\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n },\n \"join\": {\n \"description\": \"Join defines parameters to join a slice of values to a string.\",\n \"properties\": {\n \"separator\": {\n \"description\": \"Separator defines the character that should separate the values from each\\nother in the joined string.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"separator\"\n ],\n \"type\": \"object\"\n },\n \"regexp\": {\n \"description\": \"Extract a match from the input using a regular expression.\",\n \"properties\": {\n \"group\": {\n \"description\": \"Group number to match. 0 (the default) matches the entire expression.\",\n \"type\": \"integer\"\n },\n \"match\": {\n \"description\": \"Match string. May optionally include submatches, aka capture groups.\\nSee https://pkg.go.dev/regexp/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"match\"\n ],\n \"type\": \"object\"\n },\n \"trim\": {\n \"description\": \"Trim the prefix or suffix from the input\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Format\",\n \"description\": \"Type of the string transform to be run.\",\n \"enum\": [\n \"Format\",\n \"Convert\",\n \"TrimPrefix\",\n \"TrimSuffix\",\n \"Regexp\",\n \"Join\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of the transform to be run.\",\n \"enum\": [\n \"map\",\n \"match\",\n \"math\",\n \"string\",\n \"convert\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"FromCompositeFieldPath\",\n \"description\": \"Type sets the patching behaviour to be used. Each patch type may require\\nits own fields to be set on the Patch object.\",\n \"enum\": [\n \"FromCompositeFieldPath\",\n \"ToCompositeFieldPath\",\n \"CombineFromComposite\",\n \"CombineToComposite\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"policy\": {\n \"description\": \"Policy represents the Resolve and Resolution policies which apply to\\nall EnvironmentSourceReferences in EnvironmentConfigs list.\",\n \"properties\": {\n \"resolution\": {\n \"default\": \"Required\",\n \"description\": \"Resolution specifies whether resolution of this reference is required.\\nThe default is 'Required', which means the reconcile will fail if the\\nreference cannot be resolved. 'Optional' means this reference will be\\na no-op if it cannot be resolved.\",\n \"enum\": [\n \"Required\",\n \"Optional\"\n ],\n \"type\": \"string\"\n },\n \"resolve\": {\n \"description\": \"Resolve specifies when this reference should be resolved. The default\\nis 'IfNotPresent', which will attempt to resolve the reference only when\\nthe corresponding field is not present. Use 'Always' to resolve the\\nreference on every reconcile.\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"mode\": {\n \"default\": \"Resources\",\n \"description\": \"Mode controls what type or \\\"mode\\\" of Composition will be used.\\n\\n\\n\\\"Pipeline\\\" indicates that a Composition specifies a pipeline of\\nComposition Functions, each of which is responsible for producing\\ncomposed resources that Crossplane should create or update.\\n\\n\\n\\\"Resources\\\" indicates that a Composition uses what is commonly referred\\nto as \\\"Patch \\u0026 Transform\\\" or P\\u0026T composition. This mode of Composition\\nuses an array of resources, each a template for a composed resource.\\n\\n\\nAll Compositions should use Pipeline mode. Resources mode is deprecated.\\nResources mode won't be removed in Crossplane 1.x, and will remain the\\ndefault to avoid breaking legacy Compositions. However, it's no longer\\naccepting new features, and only accepting security related bug fixes.\",\n \"enum\": [\n \"Resources\",\n \"Pipeline\"\n ],\n \"type\": \"string\"\n },\n \"patchSets\": {\n \"description\": \"PatchSets define a named set of patches that may be included by any\\nresource in this Composition. PatchSets cannot themselves refer to other\\nPatchSets.\\n\\n\\nPatchSets are only used by the \\\"Resources\\\" mode of Composition. They\\nare ignored by other modes.\\n\\n\\nDeprecated: Use Composition Functions instead.\",\n \"items\": {\n \"description\": \"A PatchSet is a set of patches that can be reused from all resources within\\na Composition.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of this PatchSet.\",\n \"type\": \"string\"\n },\n \"patches\": {\n \"description\": \"Patches will be applied as an overlay to the base resource.\",\n \"items\": {\n \"description\": \"Patch objects are applied between composite and composed resources. Their\\nbehaviour depends on the Type selected. The default Type,\\nFromCompositeFieldPath, copies a value from the composite resource to\\nthe composed resource, applying any defined transformers.\",\n \"properties\": {\n \"combine\": {\n \"description\": \"Combine is the patch configuration for a CombineFromComposite,\\nCombineFromEnvironment, CombineToComposite or CombineToEnvironment patch.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Strategy defines the strategy to use to combine the input variable values.\\nCurrently only string is supported.\",\n \"enum\": [\n \"string\"\n ],\n \"type\": \"string\"\n },\n \"string\": {\n \"description\": \"String declares that input variables should be combined into a single\\nstring, using the relevant settings for formatting purposes.\",\n \"properties\": {\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fmt\"\n ],\n \"type\": \"object\"\n },\n \"variables\": {\n \"description\": \"Variables are the list of variables whose values will be retrieved and\\ncombined.\",\n \"items\": {\n \"description\": \"A CombineVariable defines the source of a value that is combined with\\nothers to form and patch an output value. Currently, this only supports\\nretrieving values from a field path.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the source whose value is\\nto be used as input.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fromFieldPath\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"strategy\",\n \"variables\"\n ],\n \"type\": \"object\"\n },\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the resource whose value is\\nto be used as input. Required when type is FromCompositeFieldPath,\\nFromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath.\",\n \"type\": \"string\"\n },\n \"patchSetName\": {\n \"description\": \"PatchSetName to include patches from. Required when type is PatchSet.\",\n \"type\": \"string\"\n },\n \"policy\": {\n \"description\": \"Policy configures the specifics of patching behaviour.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath specifies how to patch from a field path. The default is\\n'Optional', which means the patch will be a no-op if the specified\\nfromFieldPath does not exist. Use 'Required' if the patch should fail if\\nthe specified path does not exist.\",\n \"enum\": [\n \"Optional\",\n \"Required\"\n ],\n \"type\": \"string\"\n },\n \"mergeOptions\": {\n \"description\": \"MergeOptions Specifies merge options on a field path.\",\n \"properties\": {\n \"appendSlice\": {\n \"description\": \"Specifies that already existing elements in a merged slice should be preserved\",\n \"type\": \"boolean\"\n },\n \"keepMapValues\": {\n \"description\": \"Specifies that already existing values in a merged map should be preserved\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"toFieldPath\": {\n \"description\": \"ToFieldPath is the path of the field on the resource whose value will\\nbe changed with the result of transforms. Leave empty if you'd like to\\npropagate to the same path as fromFieldPath.\",\n \"type\": \"string\"\n },\n \"transforms\": {\n \"description\": \"Transforms are the list of functions that are used as a FIFO pipe for the\\ninput to be transformed.\",\n \"items\": {\n \"description\": \"Transform is a unit of process whose input is transformed into an output with\\nthe supplied configuration.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Convert is used to cast the input into the given output type.\",\n \"properties\": {\n \"format\": {\n \"description\": \"The expected input format.\\n\\n\\n* `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity).\\nOnly used during `string -\\u003e float64` conversions.\\n* `json` - parses the input as a JSON string.\\nOnly used during `string -\\u003e object` or `string -\\u003e list` conversions.\\n\\n\\nIf this property is null, the default conversion is applied.\",\n \"enum\": [\n \"none\",\n \"quantity\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"toType\": {\n \"description\": \"ToType is the type of the output of this transform.\",\n \"enum\": [\n \"string\",\n \"int\",\n \"int64\",\n \"bool\",\n \"float64\",\n \"object\",\n \"array\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"toType\"\n ],\n \"type\": \"object\"\n },\n \"map\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"description\": \"Map uses the input as a key in the given map and returns the value.\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is a more complex version of Map that matches a list of patterns.\",\n \"properties\": {\n \"fallbackTo\": {\n \"default\": \"Value\",\n \"description\": \"Determines to what value the transform should fallback if no pattern matches.\",\n \"enum\": [\n \"Value\",\n \"Input\"\n ],\n \"type\": \"string\"\n },\n \"fallbackValue\": {\n \"description\": \"The fallback value that should be returned by the transform if now pattern\\nmatches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"patterns\": {\n \"description\": \"The patterns that should be tested against the input string.\\nPatterns are tested in order. The value of the first match is used as\\nresult of this transform.\",\n \"items\": {\n \"description\": \"MatchTransformPattern is a transform that returns the value that matches a\\npattern.\",\n \"properties\": {\n \"literal\": {\n \"description\": \"Literal exactly matches the input string (case sensitive).\\nIs required if `type` is `literal`.\",\n \"type\": \"string\"\n },\n \"regexp\": {\n \"description\": \"Regexp to match against the input string.\\nIs required if `type` is `regexp`.\",\n \"type\": \"string\"\n },\n \"result\": {\n \"description\": \"The value that is used as result of the transform if the pattern matches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"literal\",\n \"description\": \"Type specifies how the pattern matches the input.\\n\\n\\n* `literal` - the pattern value has to exactly match (case sensitive) the\\ninput string. This is the default.\\n\\n\\n* `regexp` - the pattern treated as a regular expression against\\nwhich the input string is tested. Crossplane will throw an error if the\\nkey is not a valid regexp.\",\n \"enum\": [\n \"literal\",\n \"regexp\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"result\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"math\": {\n \"description\": \"Math is used to transform the input via mathematical operations such as\\nmultiplication.\",\n \"properties\": {\n \"clampMax\": {\n \"description\": \"ClampMax makes sure that the value is not bigger than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"clampMin\": {\n \"description\": \"ClampMin makes sure that the value is not smaller than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"multiply\": {\n \"description\": \"Multiply the value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"Multiply\",\n \"description\": \"Type of the math transform to be run.\",\n \"enum\": [\n \"Multiply\",\n \"ClampMin\",\n \"ClampMax\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"string\": {\n \"description\": \"String is used to transform the input into a string or a different kind\\nof string. Note that the input does not necessarily need to be a string.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Optional conversion method to be specified.\\n`ToUpper` and `ToLower` change the letter case of the input string.\\n`ToBase64` and `FromBase64` perform a base64 conversion based on the input string.\\n`ToJson` converts any input value into its raw JSON representation.\\n`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input\\nconverted to JSON.\\n`ToAdler32` generate a addler32 hash based on the input string.\",\n \"enum\": [\n \"ToUpper\",\n \"ToLower\",\n \"ToBase64\",\n \"FromBase64\",\n \"ToJson\",\n \"ToSha1\",\n \"ToSha256\",\n \"ToSha512\",\n \"ToAdler32\"\n ],\n \"type\": \"string\"\n },\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n },\n \"join\": {\n \"description\": \"Join defines parameters to join a slice of values to a string.\",\n \"properties\": {\n \"separator\": {\n \"description\": \"Separator defines the character that should separate the values from each\\nother in the joined string.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"separator\"\n ],\n \"type\": \"object\"\n },\n \"regexp\": {\n \"description\": \"Extract a match from the input using a regular expression.\",\n \"properties\": {\n \"group\": {\n \"description\": \"Group number to match. 0 (the default) matches the entire expression.\",\n \"type\": \"integer\"\n },\n \"match\": {\n \"description\": \"Match string. May optionally include submatches, aka capture groups.\\nSee https://pkg.go.dev/regexp/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"match\"\n ],\n \"type\": \"object\"\n },\n \"trim\": {\n \"description\": \"Trim the prefix or suffix from the input\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Format\",\n \"description\": \"Type of the string transform to be run.\",\n \"enum\": [\n \"Format\",\n \"Convert\",\n \"TrimPrefix\",\n \"TrimSuffix\",\n \"Regexp\",\n \"Join\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of the transform to be run.\",\n \"enum\": [\n \"map\",\n \"match\",\n \"math\",\n \"string\",\n \"convert\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"FromCompositeFieldPath\",\n \"description\": \"Type sets the patching behaviour to be used. Each patch type may require\\nits own fields to be set on the Patch object.\",\n \"enum\": [\n \"FromCompositeFieldPath\",\n \"FromEnvironmentFieldPath\",\n \"PatchSet\",\n \"ToCompositeFieldPath\",\n \"ToEnvironmentFieldPath\",\n \"CombineFromEnvironment\",\n \"CombineFromComposite\",\n \"CombineToComposite\",\n \"CombineToEnvironment\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"patches\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"pipeline\": {\n \"description\": \"Pipeline is a list of composition function steps that will be used when a\\ncomposite resource referring to this composition is created. One of\\nresources and pipeline must be specified - you cannot specify both.\\n\\n\\nThe Pipeline is only used by the \\\"Pipeline\\\" mode of Composition. It is\\nignored by other modes.\",\n \"items\": {\n \"description\": \"A PipelineStep in a Composition Function pipeline.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Credentials are optional credentials that the Composition Function needs.\",\n \"items\": {\n \"description\": \"FunctionCredentials are optional credentials that a Composition Function\\nneeds to run.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of this set of credentials.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"A SecretRef is a reference to a secret containing credentials that should\\nbe supplied to the function.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the secret.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"namespace\"\n ],\n \"type\": \"object\"\n },\n \"source\": {\n \"description\": \"Source of the function credentials.\",\n \"enum\": [\n \"None\",\n \"Secret\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"source\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"functionRef\": {\n \"description\": \"FunctionRef is a reference to the Composition Function this step should\\nexecute.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referenced Function.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"input\": {\n \"description\": \"Input is an optional, arbitrary Kubernetes resource (i.e. a resource\\nwith an apiVersion and kind) that will be passed to the Composition\\nFunction as the 'input' of its RunFunctionRequest.\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"step\": {\n \"description\": \"Step name. Must be unique within its Pipeline.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"functionRef\",\n \"step\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"step\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishConnectionDetailsWithStoreConfigRef\": {\n \"default\": {\n \"name\": \"default\"\n },\n \"description\": \"PublishConnectionDetailsWithStoreConfig specifies the secret store config\\nwith which the connection details of composite resources dynamically\\nprovisioned using this composition will be published.\\n\\n\\nTHIS IS AN ALPHA FIELD. Do not use it in production. It is not honored\\nunless the relevant Crossplane feature flag is enabled, and may be\\nchanged or removed without notice.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referenced StoreConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is a list of resource templates that will be used when a\\ncomposite resource referring to this composition is created.\\n\\n\\nResources are only used by the \\\"Resources\\\" mode of Composition. They are\\nignored by other modes.\\n\\n\\nDeprecated: Use Composition Functions instead.\",\n \"items\": {\n \"description\": \"ComposedTemplate is used to provide information about how the composed resource\\nshould be processed.\",\n \"properties\": {\n \"base\": {\n \"description\": \"Base is the target resource that the patches will be applied on.\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"connectionDetails\": {\n \"description\": \"ConnectionDetails lists the propagation secret keys from this target\\nresource to the composition instance connection secret.\",\n \"items\": {\n \"description\": \"ConnectionDetail includes the information about the propagation of the connection\\ninformation from one secret to another.\",\n \"properties\": {\n \"fromConnectionSecretKey\": {\n \"description\": \"FromConnectionSecretKey is the key that will be used to fetch the value\\nfrom the composed resource's connection secret.\",\n \"type\": \"string\"\n },\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the composed resource whose\\nvalue to be used as input. Name must be specified if the type is\\nFromFieldPath.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the connection secret key that will be propagated to the\\nconnection secret of the composition instance. Leave empty if you'd like\\nto use the same key name.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type sets the connection detail fetching behaviour to be used. Each\\nconnection detail type may require its own fields to be set on the\\nConnectionDetail object. If the type is omitted Crossplane will attempt\\nto infer it based on which other fields were specified. If multiple\\nfields are specified the order of precedence is:\\n1. FromValue\\n2. FromConnectionSecretKey\\n3. FromFieldPath\",\n \"enum\": [\n \"FromConnectionSecretKey\",\n \"FromFieldPath\",\n \"FromValue\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value that will be propagated to the connection secret of the composite\\nresource. May be set to inject a fixed, non-sensitive connection secret\\nvalue, for example a well-known port.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"A Name uniquely identifies this entry within its Composition's resources\\narray. Names are optional but *strongly* recommended. When all entries in\\nthe resources array are named entries may added, deleted, and reordered\\nas long as their names do not change. When entries are not named the\\nlength and order of the resources array should be treated as immutable.\\nEither all or no entries must be named.\",\n \"type\": \"string\"\n },\n \"patches\": {\n \"description\": \"Patches will be applied as overlay to the base resource.\",\n \"items\": {\n \"description\": \"Patch objects are applied between composite and composed resources. Their\\nbehaviour depends on the Type selected. The default Type,\\nFromCompositeFieldPath, copies a value from the composite resource to\\nthe composed resource, applying any defined transformers.\",\n \"properties\": {\n \"combine\": {\n \"description\": \"Combine is the patch configuration for a CombineFromComposite,\\nCombineFromEnvironment, CombineToComposite or CombineToEnvironment patch.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Strategy defines the strategy to use to combine the input variable values.\\nCurrently only string is supported.\",\n \"enum\": [\n \"string\"\n ],\n \"type\": \"string\"\n },\n \"string\": {\n \"description\": \"String declares that input variables should be combined into a single\\nstring, using the relevant settings for formatting purposes.\",\n \"properties\": {\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fmt\"\n ],\n \"type\": \"object\"\n },\n \"variables\": {\n \"description\": \"Variables are the list of variables whose values will be retrieved and\\ncombined.\",\n \"items\": {\n \"description\": \"A CombineVariable defines the source of a value that is combined with\\nothers to form and patch an output value. Currently, this only supports\\nretrieving values from a field path.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the source whose value is\\nto be used as input.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fromFieldPath\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"strategy\",\n \"variables\"\n ],\n \"type\": \"object\"\n },\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the resource whose value is\\nto be used as input. Required when type is FromCompositeFieldPath,\\nFromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath.\",\n \"type\": \"string\"\n },\n \"patchSetName\": {\n \"description\": \"PatchSetName to include patches from. Required when type is PatchSet.\",\n \"type\": \"string\"\n },\n \"policy\": {\n \"description\": \"Policy configures the specifics of patching behaviour.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath specifies how to patch from a field path. The default is\\n'Optional', which means the patch will be a no-op if the specified\\nfromFieldPath does not exist. Use 'Required' if the patch should fail if\\nthe specified path does not exist.\",\n \"enum\": [\n \"Optional\",\n \"Required\"\n ],\n \"type\": \"string\"\n },\n \"mergeOptions\": {\n \"description\": \"MergeOptions Specifies merge options on a field path.\",\n \"properties\": {\n \"appendSlice\": {\n \"description\": \"Specifies that already existing elements in a merged slice should be preserved\",\n \"type\": \"boolean\"\n },\n \"keepMapValues\": {\n \"description\": \"Specifies that already existing values in a merged map should be preserved\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"toFieldPath\": {\n \"description\": \"ToFieldPath is the path of the field on the resource whose value will\\nbe changed with the result of transforms. Leave empty if you'd like to\\npropagate to the same path as fromFieldPath.\",\n \"type\": \"string\"\n },\n \"transforms\": {\n \"description\": \"Transforms are the list of functions that are used as a FIFO pipe for the\\ninput to be transformed.\",\n \"items\": {\n \"description\": \"Transform is a unit of process whose input is transformed into an output with\\nthe supplied configuration.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Convert is used to cast the input into the given output type.\",\n \"properties\": {\n \"format\": {\n \"description\": \"The expected input format.\\n\\n\\n* `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity).\\nOnly used during `string -\\u003e float64` conversions.\\n* `json` - parses the input as a JSON string.\\nOnly used during `string -\\u003e object` or `string -\\u003e list` conversions.\\n\\n\\nIf this property is null, the default conversion is applied.\",\n \"enum\": [\n \"none\",\n \"quantity\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"toType\": {\n \"description\": \"ToType is the type of the output of this transform.\",\n \"enum\": [\n \"string\",\n \"int\",\n \"int64\",\n \"bool\",\n \"float64\",\n \"object\",\n \"array\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"toType\"\n ],\n \"type\": \"object\"\n },\n \"map\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"description\": \"Map uses the input as a key in the given map and returns the value.\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is a more complex version of Map that matches a list of patterns.\",\n \"properties\": {\n \"fallbackTo\": {\n \"default\": \"Value\",\n \"description\": \"Determines to what value the transform should fallback if no pattern matches.\",\n \"enum\": [\n \"Value\",\n \"Input\"\n ],\n \"type\": \"string\"\n },\n \"fallbackValue\": {\n \"description\": \"The fallback value that should be returned by the transform if now pattern\\nmatches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"patterns\": {\n \"description\": \"The patterns that should be tested against the input string.\\nPatterns are tested in order. The value of the first match is used as\\nresult of this transform.\",\n \"items\": {\n \"description\": \"MatchTransformPattern is a transform that returns the value that matches a\\npattern.\",\n \"properties\": {\n \"literal\": {\n \"description\": \"Literal exactly matches the input string (case sensitive).\\nIs required if `type` is `literal`.\",\n \"type\": \"string\"\n },\n \"regexp\": {\n \"description\": \"Regexp to match against the input string.\\nIs required if `type` is `regexp`.\",\n \"type\": \"string\"\n },\n \"result\": {\n \"description\": \"The value that is used as result of the transform if the pattern matches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"literal\",\n \"description\": \"Type specifies how the pattern matches the input.\\n\\n\\n* `literal` - the pattern value has to exactly match (case sensitive) the\\ninput string. This is the default.\\n\\n\\n* `regexp` - the pattern treated as a regular expression against\\nwhich the input string is tested. Crossplane will throw an error if the\\nkey is not a valid regexp.\",\n \"enum\": [\n \"literal\",\n \"regexp\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"result\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"math\": {\n \"description\": \"Math is used to transform the input via mathematical operations such as\\nmultiplication.\",\n \"properties\": {\n \"clampMax\": {\n \"description\": \"ClampMax makes sure that the value is not bigger than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"clampMin\": {\n \"description\": \"ClampMin makes sure that the value is not smaller than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"multiply\": {\n \"description\": \"Multiply the value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"Multiply\",\n \"description\": \"Type of the math transform to be run.\",\n \"enum\": [\n \"Multiply\",\n \"ClampMin\",\n \"ClampMax\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"string\": {\n \"description\": \"String is used to transform the input into a string or a different kind\\nof string. Note that the input does not necessarily need to be a string.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Optional conversion method to be specified.\\n`ToUpper` and `ToLower` change the letter case of the input string.\\n`ToBase64` and `FromBase64` perform a base64 conversion based on the input string.\\n`ToJson` converts any input value into its raw JSON representation.\\n`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input\\nconverted to JSON.\\n`ToAdler32` generate a addler32 hash based on the input string.\",\n \"enum\": [\n \"ToUpper\",\n \"ToLower\",\n \"ToBase64\",\n \"FromBase64\",\n \"ToJson\",\n \"ToSha1\",\n \"ToSha256\",\n \"ToSha512\",\n \"ToAdler32\"\n ],\n \"type\": \"string\"\n },\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n },\n \"join\": {\n \"description\": \"Join defines parameters to join a slice of values to a string.\",\n \"properties\": {\n \"separator\": {\n \"description\": \"Separator defines the character that should separate the values from each\\nother in the joined string.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"separator\"\n ],\n \"type\": \"object\"\n },\n \"regexp\": {\n \"description\": \"Extract a match from the input using a regular expression.\",\n \"properties\": {\n \"group\": {\n \"description\": \"Group number to match. 0 (the default) matches the entire expression.\",\n \"type\": \"integer\"\n },\n \"match\": {\n \"description\": \"Match string. May optionally include submatches, aka capture groups.\\nSee https://pkg.go.dev/regexp/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"match\"\n ],\n \"type\": \"object\"\n },\n \"trim\": {\n \"description\": \"Trim the prefix or suffix from the input\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Format\",\n \"description\": \"Type of the string transform to be run.\",\n \"enum\": [\n \"Format\",\n \"Convert\",\n \"TrimPrefix\",\n \"TrimSuffix\",\n \"Regexp\",\n \"Join\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of the transform to be run.\",\n \"enum\": [\n \"map\",\n \"match\",\n \"math\",\n \"string\",\n \"convert\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"FromCompositeFieldPath\",\n \"description\": \"Type sets the patching behaviour to be used. Each patch type may require\\nits own fields to be set on the Patch object.\",\n \"enum\": [\n \"FromCompositeFieldPath\",\n \"FromEnvironmentFieldPath\",\n \"PatchSet\",\n \"ToCompositeFieldPath\",\n \"ToEnvironmentFieldPath\",\n \"CombineFromEnvironment\",\n \"CombineFromComposite\",\n \"CombineToComposite\",\n \"CombineToEnvironment\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessChecks\": {\n \"default\": [\n {\n \"matchCondition\": {\n \"status\": \"True\",\n \"type\": \"Ready\"\n },\n \"type\": \"MatchCondition\"\n }\n ],\n \"description\": \"ReadinessChecks allows users to define custom readiness checks. All checks\\nhave to return true in order for resource to be considered ready. The\\ndefault readiness check is to have the \\\"Ready\\\" condition to be \\\"True\\\".\",\n \"items\": {\n \"description\": \"ReadinessCheck is used to indicate how to tell whether a resource is ready\\nfor consumption.\",\n \"properties\": {\n \"fieldPath\": {\n \"description\": \"FieldPath shows the path of the field whose value will be used.\",\n \"type\": \"string\"\n },\n \"matchCondition\": {\n \"description\": \"MatchCondition specifies the condition you'd like to match if you're using \\\"MatchCondition\\\" type.\",\n \"properties\": {\n \"status\": {\n \"default\": \"True\",\n \"description\": \"Status is the status of the condition you'd like to match.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Ready\",\n \"description\": \"Type indicates the type of condition you'd like to use.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"matchInteger\": {\n \"description\": \"MatchInt is the value you'd like to match if you're using \\\"MatchInt\\\" type.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"matchString\": {\n \"description\": \"MatchString is the value you'd like to match if you're using \\\"MatchString\\\" type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type indicates the type of probe you'd like to use.\",\n \"enum\": [\n \"MatchString\",\n \"MatchInteger\",\n \"NonEmpty\",\n \"MatchCondition\",\n \"MatchTrue\",\n \"MatchFalse\",\n \"None\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"base\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"writeConnectionSecretsToNamespace\": {\n \"description\": \"WriteConnectionSecretsToNamespace specifies the namespace in which the\\nconnection secrets of composite resource dynamically provisioned using\\nthis composition will be created.\\nThis field is planned to be replaced in a future release in favor of\\nPublishConnectionDetailsWithStoreConfigRef. Currently, both could be\\nset independently and connection details would be published to both\\nwithout affecting each other as long as related fields at MR level\\nspecified.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"compositeTypeRef\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Composition\",\n \"type\": \"object\"\n}",
+ "version": "apiextensions.crossplane.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Composition",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/CompositionRevision.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/CompositionRevision.json
new file mode 100644
index 00000000000..aa0d3d2e2d5
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/CompositionRevision.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "CompositionRevision",
+ "schema": "{\n \"description\": \"A CompositionRevision represents a revision of a Composition. Crossplane\\ncreates new revisions when there are changes to the Composition.\\n\\n\\nCrossplane creates and manages CompositionRevisions. Don't directly edit\\nCompositionRevisions.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"CompositionRevisionSpec specifies the desired state of the composition\\nrevision.\",\n \"properties\": {\n \"compositeTypeRef\": {\n \"description\": \"CompositeTypeRef specifies the type of composite resource that this\\ncomposition is compatible with.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion of the type.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Value is immutable\",\n \"rule\": \"self == oldSelf\"\n }\n ]\n },\n \"environment\": {\n \"description\": \"Environment configures the environment in which resources are rendered.\\n\\n\\nTHIS IS AN ALPHA FIELD. Do not use it in production. It is not honored\\nunless the relevant Crossplane feature flag is enabled, and may be\\nchanged or removed without notice.\",\n \"properties\": {\n \"defaultData\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"description\": \"DefaultData statically defines the initial state of the environment.\\nIt has the same schema-less structure as the data field in\\nenvironment configs.\\nIt is overwritten by the selected environment configs.\",\n \"type\": \"object\"\n },\n \"environmentConfigs\": {\n \"description\": \"EnvironmentConfigs selects a list of `EnvironmentConfig`s. The resolved\\nresources are stored in the composite resource at\\n`spec.environmentConfigRefs` and is only updated if it is null.\\n\\n\\nThe list of references is used to compute an in-memory environment at\\ncompose time. The data of all object is merged in the order they are\\nlisted, meaning the values of EnvironmentConfigs with a larger index take\\npriority over ones with smaller indices.\\n\\n\\nThe computed environment can be accessed in a composition using\\n`FromEnvironmentFieldPath` and `CombineFromEnvironment` patches.\",\n \"items\": {\n \"description\": \"EnvironmentSource selects a EnvironmentConfig resource.\",\n \"properties\": {\n \"ref\": {\n \"description\": \"Ref is a named reference to a single EnvironmentConfig.\\nEither Ref or Selector is required.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the object.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"Selector selects EnvironmentConfig(s) via labels.\",\n \"properties\": {\n \"matchLabels\": {\n \"description\": \"MatchLabels ensures an object with matching labels is selected.\",\n \"items\": {\n \"description\": \"An EnvironmentSourceSelectorLabelMatcher acts like a k8s label selector but\\ncan draw the label value from a different path.\",\n \"properties\": {\n \"fromFieldPathPolicy\": {\n \"default\": \"Required\",\n \"description\": \"FromFieldPathPolicy specifies the policy for the valueFromFieldPath.\\nThe default is Required, meaning that an error will be returned if the\\nfield is not found in the composite resource.\\nOptional means that if the field is not found in the composite resource,\\nthat label pair will just be skipped. N.B. other specified label\\nmatchers will still be used to retrieve the desired\\nenvironment config, if any.\",\n \"enum\": [\n \"Optional\",\n \"Required\"\n ],\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key of the label to match.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"FromCompositeFieldPath\",\n \"description\": \"Type specifies where the value for a label comes from.\",\n \"enum\": [\n \"FromCompositeFieldPath\",\n \"Value\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value specifies a literal label value.\",\n \"type\": \"string\"\n },\n \"valueFromFieldPath\": {\n \"description\": \"ValueFromFieldPath specifies the field path to look for the label value.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"maxMatch\": {\n \"description\": \"MaxMatch specifies the number of extracted EnvironmentConfigs in Multiple mode, extracts all if nil.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"minMatch\": {\n \"description\": \"MinMatch specifies the required minimum of extracted EnvironmentConfigs in Multiple mode.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"mode\": {\n \"default\": \"Single\",\n \"description\": \"Mode specifies retrieval strategy: \\\"Single\\\" or \\\"Multiple\\\".\",\n \"enum\": [\n \"Single\",\n \"Multiple\"\n ],\n \"type\": \"string\"\n },\n \"sortByFieldPath\": {\n \"default\": \"metadata.name\",\n \"description\": \"SortByFieldPath is the path to the field based on which list of EnvironmentConfigs is alphabetically sorted.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"Reference\",\n \"description\": \"Type specifies the way the EnvironmentConfig is selected.\\nDefault is `Reference`\",\n \"enum\": [\n \"Reference\",\n \"Selector\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"patches\": {\n \"description\": \"Patches is a list of environment patches that are executed before a\\ncomposition's resources are composed.\",\n \"items\": {\n \"description\": \"EnvironmentPatch is a patch for a Composition environment.\",\n \"properties\": {\n \"combine\": {\n \"description\": \"Combine is the patch configuration for a CombineFromComposite or\\nCombineToComposite patch.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Strategy defines the strategy to use to combine the input variable values.\\nCurrently only string is supported.\",\n \"enum\": [\n \"string\"\n ],\n \"type\": \"string\"\n },\n \"string\": {\n \"description\": \"String declares that input variables should be combined into a single\\nstring, using the relevant settings for formatting purposes.\",\n \"properties\": {\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fmt\"\n ],\n \"type\": \"object\"\n },\n \"variables\": {\n \"description\": \"Variables are the list of variables whose values will be retrieved and\\ncombined.\",\n \"items\": {\n \"description\": \"A CombineVariable defines the source of a value that is combined with\\nothers to form and patch an output value. Currently, this only supports\\nretrieving values from a field path.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the source whose value is\\nto be used as input.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fromFieldPath\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"strategy\",\n \"variables\"\n ],\n \"type\": \"object\"\n },\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the resource whose value is\\nto be used as input. Required when type is FromCompositeFieldPath or\\nToCompositeFieldPath.\",\n \"type\": \"string\"\n },\n \"policy\": {\n \"description\": \"Policy configures the specifics of patching behaviour.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath specifies how to patch from a field path. The default is\\n'Optional', which means the patch will be a no-op if the specified\\nfromFieldPath does not exist. Use 'Required' if the patch should fail if\\nthe specified path does not exist.\",\n \"enum\": [\n \"Optional\",\n \"Required\"\n ],\n \"type\": \"string\"\n },\n \"mergeOptions\": {\n \"description\": \"MergeOptions Specifies merge options on a field path.\",\n \"properties\": {\n \"appendSlice\": {\n \"description\": \"Specifies that already existing elements in a merged slice should be preserved\",\n \"type\": \"boolean\"\n },\n \"keepMapValues\": {\n \"description\": \"Specifies that already existing values in a merged map should be preserved\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"toFieldPath\": {\n \"description\": \"ToFieldPath is the path of the field on the resource whose value will\\nbe changed with the result of transforms. Leave empty if you'd like to\\npropagate to the same path as fromFieldPath.\",\n \"type\": \"string\"\n },\n \"transforms\": {\n \"description\": \"Transforms are the list of functions that are used as a FIFO pipe for the\\ninput to be transformed.\",\n \"items\": {\n \"description\": \"Transform is a unit of process whose input is transformed into an output with\\nthe supplied configuration.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Convert is used to cast the input into the given output type.\",\n \"properties\": {\n \"format\": {\n \"description\": \"The expected input format.\\n\\n\\n* `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity).\\nOnly used during `string -\\u003e float64` conversions.\\n* `json` - parses the input as a JSON string.\\nOnly used during `string -\\u003e object` or `string -\\u003e list` conversions.\\n\\n\\nIf this property is null, the default conversion is applied.\",\n \"enum\": [\n \"none\",\n \"quantity\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"toType\": {\n \"description\": \"ToType is the type of the output of this transform.\",\n \"enum\": [\n \"string\",\n \"int\",\n \"int64\",\n \"bool\",\n \"float64\",\n \"object\",\n \"array\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"toType\"\n ],\n \"type\": \"object\"\n },\n \"map\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"description\": \"Map uses the input as a key in the given map and returns the value.\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is a more complex version of Map that matches a list of patterns.\",\n \"properties\": {\n \"fallbackTo\": {\n \"default\": \"Value\",\n \"description\": \"Determines to what value the transform should fallback if no pattern matches.\",\n \"enum\": [\n \"Value\",\n \"Input\"\n ],\n \"type\": \"string\"\n },\n \"fallbackValue\": {\n \"description\": \"The fallback value that should be returned by the transform if now pattern\\nmatches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"patterns\": {\n \"description\": \"The patterns that should be tested against the input string.\\nPatterns are tested in order. The value of the first match is used as\\nresult of this transform.\",\n \"items\": {\n \"description\": \"MatchTransformPattern is a transform that returns the value that matches a\\npattern.\",\n \"properties\": {\n \"literal\": {\n \"description\": \"Literal exactly matches the input string (case sensitive).\\nIs required if `type` is `literal`.\",\n \"type\": \"string\"\n },\n \"regexp\": {\n \"description\": \"Regexp to match against the input string.\\nIs required if `type` is `regexp`.\",\n \"type\": \"string\"\n },\n \"result\": {\n \"description\": \"The value that is used as result of the transform if the pattern matches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"literal\",\n \"description\": \"Type specifies how the pattern matches the input.\\n\\n\\n* `literal` - the pattern value has to exactly match (case sensitive) the\\ninput string. This is the default.\\n\\n\\n* `regexp` - the pattern treated as a regular expression against\\nwhich the input string is tested. Crossplane will throw an error if the\\nkey is not a valid regexp.\",\n \"enum\": [\n \"literal\",\n \"regexp\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"result\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"math\": {\n \"description\": \"Math is used to transform the input via mathematical operations such as\\nmultiplication.\",\n \"properties\": {\n \"clampMax\": {\n \"description\": \"ClampMax makes sure that the value is not bigger than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"clampMin\": {\n \"description\": \"ClampMin makes sure that the value is not smaller than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"multiply\": {\n \"description\": \"Multiply the value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"Multiply\",\n \"description\": \"Type of the math transform to be run.\",\n \"enum\": [\n \"Multiply\",\n \"ClampMin\",\n \"ClampMax\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"string\": {\n \"description\": \"String is used to transform the input into a string or a different kind\\nof string. Note that the input does not necessarily need to be a string.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Optional conversion method to be specified.\\n`ToUpper` and `ToLower` change the letter case of the input string.\\n`ToBase64` and `FromBase64` perform a base64 conversion based on the input string.\\n`ToJson` converts any input value into its raw JSON representation.\\n`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input\\nconverted to JSON.\\n`ToAdler32` generate a addler32 hash based on the input string.\",\n \"enum\": [\n \"ToUpper\",\n \"ToLower\",\n \"ToBase64\",\n \"FromBase64\",\n \"ToJson\",\n \"ToSha1\",\n \"ToSha256\",\n \"ToSha512\",\n \"ToAdler32\"\n ],\n \"type\": \"string\"\n },\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n },\n \"join\": {\n \"description\": \"Join defines parameters to join a slice of values to a string.\",\n \"properties\": {\n \"separator\": {\n \"description\": \"Separator defines the character that should separate the values from each\\nother in the joined string.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"separator\"\n ],\n \"type\": \"object\"\n },\n \"regexp\": {\n \"description\": \"Extract a match from the input using a regular expression.\",\n \"properties\": {\n \"group\": {\n \"description\": \"Group number to match. 0 (the default) matches the entire expression.\",\n \"type\": \"integer\"\n },\n \"match\": {\n \"description\": \"Match string. May optionally include submatches, aka capture groups.\\nSee https://pkg.go.dev/regexp/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"match\"\n ],\n \"type\": \"object\"\n },\n \"trim\": {\n \"description\": \"Trim the prefix or suffix from the input\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Format\",\n \"description\": \"Type of the string transform to be run.\",\n \"enum\": [\n \"Format\",\n \"Convert\",\n \"TrimPrefix\",\n \"TrimSuffix\",\n \"Regexp\",\n \"Join\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of the transform to be run.\",\n \"enum\": [\n \"map\",\n \"match\",\n \"math\",\n \"string\",\n \"convert\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"FromCompositeFieldPath\",\n \"description\": \"Type sets the patching behaviour to be used. Each patch type may require\\nits own fields to be set on the Patch object.\",\n \"enum\": [\n \"FromCompositeFieldPath\",\n \"ToCompositeFieldPath\",\n \"CombineFromComposite\",\n \"CombineToComposite\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"policy\": {\n \"description\": \"Policy represents the Resolve and Resolution policies which apply to\\nall EnvironmentSourceReferences in EnvironmentConfigs list.\",\n \"properties\": {\n \"resolution\": {\n \"default\": \"Required\",\n \"description\": \"Resolution specifies whether resolution of this reference is required.\\nThe default is 'Required', which means the reconcile will fail if the\\nreference cannot be resolved. 'Optional' means this reference will be\\na no-op if it cannot be resolved.\",\n \"enum\": [\n \"Required\",\n \"Optional\"\n ],\n \"type\": \"string\"\n },\n \"resolve\": {\n \"description\": \"Resolve specifies when this reference should be resolved. The default\\nis 'IfNotPresent', which will attempt to resolve the reference only when\\nthe corresponding field is not present. Use 'Always' to resolve the\\nreference on every reconcile.\",\n \"enum\": [\n \"Always\",\n \"IfNotPresent\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"mode\": {\n \"default\": \"Resources\",\n \"description\": \"Mode controls what type or \\\"mode\\\" of Composition will be used.\\n\\n\\n\\\"Pipeline\\\" indicates that a Composition specifies a pipeline of\\nComposition Functions, each of which is responsible for producing\\ncomposed resources that Crossplane should create or update.\\n\\n\\n\\\"Resources\\\" indicates that a Composition uses what is commonly referred\\nto as \\\"Patch \\u0026 Transform\\\" or P\\u0026T composition. This mode of Composition\\nuses an array of resources, each a template for a composed resource.\\n\\n\\nAll Compositions should use Pipeline mode. Resources mode is deprecated.\\nResources mode won't be removed in Crossplane 1.x, and will remain the\\ndefault to avoid breaking legacy Compositions. However, it's no longer\\naccepting new features, and only accepting security related bug fixes.\",\n \"enum\": [\n \"Resources\",\n \"Pipeline\"\n ],\n \"type\": \"string\"\n },\n \"patchSets\": {\n \"description\": \"PatchSets define a named set of patches that may be included by any\\nresource in this Composition. PatchSets cannot themselves refer to other\\nPatchSets.\\n\\n\\nPatchSets are only used by the \\\"Resources\\\" mode of Composition. They\\nare ignored by other modes.\\n\\n\\nDeprecated: Use Composition Functions instead.\",\n \"items\": {\n \"description\": \"A PatchSet is a set of patches that can be reused from all resources within\\na Composition.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of this PatchSet.\",\n \"type\": \"string\"\n },\n \"patches\": {\n \"description\": \"Patches will be applied as an overlay to the base resource.\",\n \"items\": {\n \"description\": \"Patch objects are applied between composite and composed resources. Their\\nbehaviour depends on the Type selected. The default Type,\\nFromCompositeFieldPath, copies a value from the composite resource to\\nthe composed resource, applying any defined transformers.\",\n \"properties\": {\n \"combine\": {\n \"description\": \"Combine is the patch configuration for a CombineFromComposite,\\nCombineFromEnvironment, CombineToComposite or CombineToEnvironment patch.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Strategy defines the strategy to use to combine the input variable values.\\nCurrently only string is supported.\",\n \"enum\": [\n \"string\"\n ],\n \"type\": \"string\"\n },\n \"string\": {\n \"description\": \"String declares that input variables should be combined into a single\\nstring, using the relevant settings for formatting purposes.\",\n \"properties\": {\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fmt\"\n ],\n \"type\": \"object\"\n },\n \"variables\": {\n \"description\": \"Variables are the list of variables whose values will be retrieved and\\ncombined.\",\n \"items\": {\n \"description\": \"A CombineVariable defines the source of a value that is combined with\\nothers to form and patch an output value. Currently, this only supports\\nretrieving values from a field path.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the source whose value is\\nto be used as input.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fromFieldPath\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"strategy\",\n \"variables\"\n ],\n \"type\": \"object\"\n },\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the resource whose value is\\nto be used as input. Required when type is FromCompositeFieldPath,\\nFromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath.\",\n \"type\": \"string\"\n },\n \"patchSetName\": {\n \"description\": \"PatchSetName to include patches from. Required when type is PatchSet.\",\n \"type\": \"string\"\n },\n \"policy\": {\n \"description\": \"Policy configures the specifics of patching behaviour.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath specifies how to patch from a field path. The default is\\n'Optional', which means the patch will be a no-op if the specified\\nfromFieldPath does not exist. Use 'Required' if the patch should fail if\\nthe specified path does not exist.\",\n \"enum\": [\n \"Optional\",\n \"Required\"\n ],\n \"type\": \"string\"\n },\n \"mergeOptions\": {\n \"description\": \"MergeOptions Specifies merge options on a field path.\",\n \"properties\": {\n \"appendSlice\": {\n \"description\": \"Specifies that already existing elements in a merged slice should be preserved\",\n \"type\": \"boolean\"\n },\n \"keepMapValues\": {\n \"description\": \"Specifies that already existing values in a merged map should be preserved\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"toFieldPath\": {\n \"description\": \"ToFieldPath is the path of the field on the resource whose value will\\nbe changed with the result of transforms. Leave empty if you'd like to\\npropagate to the same path as fromFieldPath.\",\n \"type\": \"string\"\n },\n \"transforms\": {\n \"description\": \"Transforms are the list of functions that are used as a FIFO pipe for the\\ninput to be transformed.\",\n \"items\": {\n \"description\": \"Transform is a unit of process whose input is transformed into an output with\\nthe supplied configuration.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Convert is used to cast the input into the given output type.\",\n \"properties\": {\n \"format\": {\n \"description\": \"The expected input format.\\n\\n\\n* `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity).\\nOnly used during `string -\\u003e float64` conversions.\\n* `json` - parses the input as a JSON string.\\nOnly used during `string -\\u003e object` or `string -\\u003e list` conversions.\\n\\n\\nIf this property is null, the default conversion is applied.\",\n \"enum\": [\n \"none\",\n \"quantity\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"toType\": {\n \"description\": \"ToType is the type of the output of this transform.\",\n \"enum\": [\n \"string\",\n \"int\",\n \"int64\",\n \"bool\",\n \"float64\",\n \"object\",\n \"array\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"toType\"\n ],\n \"type\": \"object\"\n },\n \"map\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"description\": \"Map uses the input as a key in the given map and returns the value.\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is a more complex version of Map that matches a list of patterns.\",\n \"properties\": {\n \"fallbackTo\": {\n \"default\": \"Value\",\n \"description\": \"Determines to what value the transform should fallback if no pattern matches.\",\n \"enum\": [\n \"Value\",\n \"Input\"\n ],\n \"type\": \"string\"\n },\n \"fallbackValue\": {\n \"description\": \"The fallback value that should be returned by the transform if now pattern\\nmatches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"patterns\": {\n \"description\": \"The patterns that should be tested against the input string.\\nPatterns are tested in order. The value of the first match is used as\\nresult of this transform.\",\n \"items\": {\n \"description\": \"MatchTransformPattern is a transform that returns the value that matches a\\npattern.\",\n \"properties\": {\n \"literal\": {\n \"description\": \"Literal exactly matches the input string (case sensitive).\\nIs required if `type` is `literal`.\",\n \"type\": \"string\"\n },\n \"regexp\": {\n \"description\": \"Regexp to match against the input string.\\nIs required if `type` is `regexp`.\",\n \"type\": \"string\"\n },\n \"result\": {\n \"description\": \"The value that is used as result of the transform if the pattern matches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"literal\",\n \"description\": \"Type specifies how the pattern matches the input.\\n\\n\\n* `literal` - the pattern value has to exactly match (case sensitive) the\\ninput string. This is the default.\\n\\n\\n* `regexp` - the pattern treated as a regular expression against\\nwhich the input string is tested. Crossplane will throw an error if the\\nkey is not a valid regexp.\",\n \"enum\": [\n \"literal\",\n \"regexp\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"result\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"math\": {\n \"description\": \"Math is used to transform the input via mathematical operations such as\\nmultiplication.\",\n \"properties\": {\n \"clampMax\": {\n \"description\": \"ClampMax makes sure that the value is not bigger than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"clampMin\": {\n \"description\": \"ClampMin makes sure that the value is not smaller than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"multiply\": {\n \"description\": \"Multiply the value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"Multiply\",\n \"description\": \"Type of the math transform to be run.\",\n \"enum\": [\n \"Multiply\",\n \"ClampMin\",\n \"ClampMax\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"string\": {\n \"description\": \"String is used to transform the input into a string or a different kind\\nof string. Note that the input does not necessarily need to be a string.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Optional conversion method to be specified.\\n`ToUpper` and `ToLower` change the letter case of the input string.\\n`ToBase64` and `FromBase64` perform a base64 conversion based on the input string.\\n`ToJson` converts any input value into its raw JSON representation.\\n`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input\\nconverted to JSON.\\n`ToAdler32` generate a addler32 hash based on the input string.\",\n \"enum\": [\n \"ToUpper\",\n \"ToLower\",\n \"ToBase64\",\n \"FromBase64\",\n \"ToJson\",\n \"ToSha1\",\n \"ToSha256\",\n \"ToSha512\",\n \"ToAdler32\"\n ],\n \"type\": \"string\"\n },\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n },\n \"join\": {\n \"description\": \"Join defines parameters to join a slice of values to a string.\",\n \"properties\": {\n \"separator\": {\n \"description\": \"Separator defines the character that should separate the values from each\\nother in the joined string.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"separator\"\n ],\n \"type\": \"object\"\n },\n \"regexp\": {\n \"description\": \"Extract a match from the input using a regular expression.\",\n \"properties\": {\n \"group\": {\n \"description\": \"Group number to match. 0 (the default) matches the entire expression.\",\n \"type\": \"integer\"\n },\n \"match\": {\n \"description\": \"Match string. May optionally include submatches, aka capture groups.\\nSee https://pkg.go.dev/regexp/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"match\"\n ],\n \"type\": \"object\"\n },\n \"trim\": {\n \"description\": \"Trim the prefix or suffix from the input\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Format\",\n \"description\": \"Type of the string transform to be run.\",\n \"enum\": [\n \"Format\",\n \"Convert\",\n \"TrimPrefix\",\n \"TrimSuffix\",\n \"Regexp\",\n \"Join\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of the transform to be run.\",\n \"enum\": [\n \"map\",\n \"match\",\n \"math\",\n \"string\",\n \"convert\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"FromCompositeFieldPath\",\n \"description\": \"Type sets the patching behaviour to be used. Each patch type may require\\nits own fields to be set on the Patch object.\",\n \"enum\": [\n \"FromCompositeFieldPath\",\n \"FromEnvironmentFieldPath\",\n \"PatchSet\",\n \"ToCompositeFieldPath\",\n \"ToEnvironmentFieldPath\",\n \"CombineFromEnvironment\",\n \"CombineFromComposite\",\n \"CombineToComposite\",\n \"CombineToEnvironment\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"patches\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"pipeline\": {\n \"description\": \"Pipeline is a list of composition function steps that will be used when a\\ncomposite resource referring to this composition is created. One of\\nresources and pipeline must be specified - you cannot specify both.\\n\\n\\nThe Pipeline is only used by the \\\"Pipeline\\\" mode of Composition. It is\\nignored by other modes.\",\n \"items\": {\n \"description\": \"A PipelineStep in a Composition Function pipeline.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"Credentials are optional credentials that the Composition Function needs.\",\n \"items\": {\n \"description\": \"FunctionCredentials are optional credentials that a Composition Function\\nneeds to run.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of this set of credentials.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"A SecretRef is a reference to a secret containing credentials that should\\nbe supplied to the function.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the secret.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"namespace\"\n ],\n \"type\": \"object\"\n },\n \"source\": {\n \"description\": \"Source of the function credentials.\",\n \"enum\": [\n \"None\",\n \"Secret\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"source\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"functionRef\": {\n \"description\": \"FunctionRef is a reference to the Composition Function this step should\\nexecute.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referenced Function.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"input\": {\n \"description\": \"Input is an optional, arbitrary Kubernetes resource (i.e. a resource\\nwith an apiVersion and kind) that will be passed to the Composition\\nFunction as the 'input' of its RunFunctionRequest.\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"step\": {\n \"description\": \"Step name. Must be unique within its Pipeline.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"functionRef\",\n \"step\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"step\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishConnectionDetailsWithStoreConfigRef\": {\n \"default\": {\n \"name\": \"default\"\n },\n \"description\": \"PublishConnectionDetailsWithStoreConfig specifies the secret store config\\nwith which the connection details of composite resources dynamically\\nprovisioned using this composition will be published.\\n\\n\\nTHIS IS AN ALPHA FIELD. Do not use it in production. It is not honored\\nunless the relevant Crossplane feature flag is enabled, and may be\\nchanged or removed without notice.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referenced StoreConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources is a list of resource templates that will be used when a\\ncomposite resource referring to this composition is created.\\n\\n\\nResources are only used by the \\\"Resources\\\" mode of Composition. They are\\nignored by other modes.\\n\\n\\nDeprecated: Use Composition Functions instead.\",\n \"items\": {\n \"description\": \"ComposedTemplate is used to provide information about how the composed resource\\nshould be processed.\",\n \"properties\": {\n \"base\": {\n \"description\": \"Base is the target resource that the patches will be applied on.\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"connectionDetails\": {\n \"description\": \"ConnectionDetails lists the propagation secret keys from this target\\nresource to the composition instance connection secret.\",\n \"items\": {\n \"description\": \"ConnectionDetail includes the information about the propagation of the connection\\ninformation from one secret to another.\",\n \"properties\": {\n \"fromConnectionSecretKey\": {\n \"description\": \"FromConnectionSecretKey is the key that will be used to fetch the value\\nfrom the composed resource's connection secret.\",\n \"type\": \"string\"\n },\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the composed resource whose\\nvalue to be used as input. Name must be specified if the type is\\nFromFieldPath.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the connection secret key that will be propagated to the\\nconnection secret of the composition instance. Leave empty if you'd like\\nto use the same key name.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type sets the connection detail fetching behaviour to be used. Each\\nconnection detail type may require its own fields to be set on the\\nConnectionDetail object. If the type is omitted Crossplane will attempt\\nto infer it based on which other fields were specified. If multiple\\nfields are specified the order of precedence is:\\n1. FromValue\\n2. FromConnectionSecretKey\\n3. FromFieldPath\",\n \"enum\": [\n \"FromConnectionSecretKey\",\n \"FromFieldPath\",\n \"FromValue\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value that will be propagated to the connection secret of the composite\\nresource. May be set to inject a fixed, non-sensitive connection secret\\nvalue, for example a well-known port.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"A Name uniquely identifies this entry within its Composition's resources\\narray. Names are optional but *strongly* recommended. When all entries in\\nthe resources array are named entries may added, deleted, and reordered\\nas long as their names do not change. When entries are not named the\\nlength and order of the resources array should be treated as immutable.\\nEither all or no entries must be named.\",\n \"type\": \"string\"\n },\n \"patches\": {\n \"description\": \"Patches will be applied as overlay to the base resource.\",\n \"items\": {\n \"description\": \"Patch objects are applied between composite and composed resources. Their\\nbehaviour depends on the Type selected. The default Type,\\nFromCompositeFieldPath, copies a value from the composite resource to\\nthe composed resource, applying any defined transformers.\",\n \"properties\": {\n \"combine\": {\n \"description\": \"Combine is the patch configuration for a CombineFromComposite,\\nCombineFromEnvironment, CombineToComposite or CombineToEnvironment patch.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Strategy defines the strategy to use to combine the input variable values.\\nCurrently only string is supported.\",\n \"enum\": [\n \"string\"\n ],\n \"type\": \"string\"\n },\n \"string\": {\n \"description\": \"String declares that input variables should be combined into a single\\nstring, using the relevant settings for formatting purposes.\",\n \"properties\": {\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fmt\"\n ],\n \"type\": \"object\"\n },\n \"variables\": {\n \"description\": \"Variables are the list of variables whose values will be retrieved and\\ncombined.\",\n \"items\": {\n \"description\": \"A CombineVariable defines the source of a value that is combined with\\nothers to form and patch an output value. Currently, this only supports\\nretrieving values from a field path.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the source whose value is\\nto be used as input.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fromFieldPath\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"strategy\",\n \"variables\"\n ],\n \"type\": \"object\"\n },\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath is the path of the field on the resource whose value is\\nto be used as input. Required when type is FromCompositeFieldPath,\\nFromEnvironmentFieldPath, ToCompositeFieldPath, ToEnvironmentFieldPath.\",\n \"type\": \"string\"\n },\n \"patchSetName\": {\n \"description\": \"PatchSetName to include patches from. Required when type is PatchSet.\",\n \"type\": \"string\"\n },\n \"policy\": {\n \"description\": \"Policy configures the specifics of patching behaviour.\",\n \"properties\": {\n \"fromFieldPath\": {\n \"description\": \"FromFieldPath specifies how to patch from a field path. The default is\\n'Optional', which means the patch will be a no-op if the specified\\nfromFieldPath does not exist. Use 'Required' if the patch should fail if\\nthe specified path does not exist.\",\n \"enum\": [\n \"Optional\",\n \"Required\"\n ],\n \"type\": \"string\"\n },\n \"mergeOptions\": {\n \"description\": \"MergeOptions Specifies merge options on a field path.\",\n \"properties\": {\n \"appendSlice\": {\n \"description\": \"Specifies that already existing elements in a merged slice should be preserved\",\n \"type\": \"boolean\"\n },\n \"keepMapValues\": {\n \"description\": \"Specifies that already existing values in a merged map should be preserved\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"toFieldPath\": {\n \"description\": \"ToFieldPath is the path of the field on the resource whose value will\\nbe changed with the result of transforms. Leave empty if you'd like to\\npropagate to the same path as fromFieldPath.\",\n \"type\": \"string\"\n },\n \"transforms\": {\n \"description\": \"Transforms are the list of functions that are used as a FIFO pipe for the\\ninput to be transformed.\",\n \"items\": {\n \"description\": \"Transform is a unit of process whose input is transformed into an output with\\nthe supplied configuration.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Convert is used to cast the input into the given output type.\",\n \"properties\": {\n \"format\": {\n \"description\": \"The expected input format.\\n\\n\\n* `quantity` - parses the input as a K8s [`resource.Quantity`](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity).\\nOnly used during `string -\\u003e float64` conversions.\\n* `json` - parses the input as a JSON string.\\nOnly used during `string -\\u003e object` or `string -\\u003e list` conversions.\\n\\n\\nIf this property is null, the default conversion is applied.\",\n \"enum\": [\n \"none\",\n \"quantity\",\n \"json\"\n ],\n \"type\": \"string\"\n },\n \"toType\": {\n \"description\": \"ToType is the type of the output of this transform.\",\n \"enum\": [\n \"string\",\n \"int\",\n \"int64\",\n \"bool\",\n \"float64\",\n \"object\",\n \"array\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"toType\"\n ],\n \"type\": \"object\"\n },\n \"map\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"description\": \"Map uses the input as a key in the given map and returns the value.\",\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match is a more complex version of Map that matches a list of patterns.\",\n \"properties\": {\n \"fallbackTo\": {\n \"default\": \"Value\",\n \"description\": \"Determines to what value the transform should fallback if no pattern matches.\",\n \"enum\": [\n \"Value\",\n \"Input\"\n ],\n \"type\": \"string\"\n },\n \"fallbackValue\": {\n \"description\": \"The fallback value that should be returned by the transform if now pattern\\nmatches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"patterns\": {\n \"description\": \"The patterns that should be tested against the input string.\\nPatterns are tested in order. The value of the first match is used as\\nresult of this transform.\",\n \"items\": {\n \"description\": \"MatchTransformPattern is a transform that returns the value that matches a\\npattern.\",\n \"properties\": {\n \"literal\": {\n \"description\": \"Literal exactly matches the input string (case sensitive).\\nIs required if `type` is `literal`.\",\n \"type\": \"string\"\n },\n \"regexp\": {\n \"description\": \"Regexp to match against the input string.\\nIs required if `type` is `regexp`.\",\n \"type\": \"string\"\n },\n \"result\": {\n \"description\": \"The value that is used as result of the transform if the pattern matches.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"literal\",\n \"description\": \"Type specifies how the pattern matches the input.\\n\\n\\n* `literal` - the pattern value has to exactly match (case sensitive) the\\ninput string. This is the default.\\n\\n\\n* `regexp` - the pattern treated as a regular expression against\\nwhich the input string is tested. Crossplane will throw an error if the\\nkey is not a valid regexp.\",\n \"enum\": [\n \"literal\",\n \"regexp\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"result\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"math\": {\n \"description\": \"Math is used to transform the input via mathematical operations such as\\nmultiplication.\",\n \"properties\": {\n \"clampMax\": {\n \"description\": \"ClampMax makes sure that the value is not bigger than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"clampMin\": {\n \"description\": \"ClampMin makes sure that the value is not smaller than the given value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"multiply\": {\n \"description\": \"Multiply the value.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"Multiply\",\n \"description\": \"Type of the math transform to be run.\",\n \"enum\": [\n \"Multiply\",\n \"ClampMin\",\n \"ClampMax\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"string\": {\n \"description\": \"String is used to transform the input into a string or a different kind\\nof string. Note that the input does not necessarily need to be a string.\",\n \"properties\": {\n \"convert\": {\n \"description\": \"Optional conversion method to be specified.\\n`ToUpper` and `ToLower` change the letter case of the input string.\\n`ToBase64` and `FromBase64` perform a base64 conversion based on the input string.\\n`ToJson` converts any input value into its raw JSON representation.\\n`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input\\nconverted to JSON.\\n`ToAdler32` generate a addler32 hash based on the input string.\",\n \"enum\": [\n \"ToUpper\",\n \"ToLower\",\n \"ToBase64\",\n \"FromBase64\",\n \"ToJson\",\n \"ToSha1\",\n \"ToSha256\",\n \"ToSha512\",\n \"ToAdler32\"\n ],\n \"type\": \"string\"\n },\n \"fmt\": {\n \"description\": \"Format the input using a Go format string. See\\nhttps://golang.org/pkg/fmt/ for details.\",\n \"type\": \"string\"\n },\n \"join\": {\n \"description\": \"Join defines parameters to join a slice of values to a string.\",\n \"properties\": {\n \"separator\": {\n \"description\": \"Separator defines the character that should separate the values from each\\nother in the joined string.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"separator\"\n ],\n \"type\": \"object\"\n },\n \"regexp\": {\n \"description\": \"Extract a match from the input using a regular expression.\",\n \"properties\": {\n \"group\": {\n \"description\": \"Group number to match. 0 (the default) matches the entire expression.\",\n \"type\": \"integer\"\n },\n \"match\": {\n \"description\": \"Match string. May optionally include submatches, aka capture groups.\\nSee https://pkg.go.dev/regexp/ for details.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"match\"\n ],\n \"type\": \"object\"\n },\n \"trim\": {\n \"description\": \"Trim the prefix or suffix from the input\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Format\",\n \"description\": \"Type of the string transform to be run.\",\n \"enum\": [\n \"Format\",\n \"Convert\",\n \"TrimPrefix\",\n \"TrimSuffix\",\n \"Regexp\",\n \"Join\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of the transform to be run.\",\n \"enum\": [\n \"map\",\n \"match\",\n \"math\",\n \"string\",\n \"convert\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"FromCompositeFieldPath\",\n \"description\": \"Type sets the patching behaviour to be used. Each patch type may require\\nits own fields to be set on the Patch object.\",\n \"enum\": [\n \"FromCompositeFieldPath\",\n \"FromEnvironmentFieldPath\",\n \"PatchSet\",\n \"ToCompositeFieldPath\",\n \"ToEnvironmentFieldPath\",\n \"CombineFromEnvironment\",\n \"CombineFromComposite\",\n \"CombineToComposite\",\n \"CombineToEnvironment\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessChecks\": {\n \"default\": [\n {\n \"matchCondition\": {\n \"status\": \"True\",\n \"type\": \"Ready\"\n },\n \"type\": \"MatchCondition\"\n }\n ],\n \"description\": \"ReadinessChecks allows users to define custom readiness checks. All checks\\nhave to return true in order for resource to be considered ready. The\\ndefault readiness check is to have the \\\"Ready\\\" condition to be \\\"True\\\".\",\n \"items\": {\n \"description\": \"ReadinessCheck is used to indicate how to tell whether a resource is ready\\nfor consumption.\",\n \"properties\": {\n \"fieldPath\": {\n \"description\": \"FieldPath shows the path of the field whose value will be used.\",\n \"type\": \"string\"\n },\n \"matchCondition\": {\n \"description\": \"MatchCondition specifies the condition you'd like to match if you're using \\\"MatchCondition\\\" type.\",\n \"properties\": {\n \"status\": {\n \"default\": \"True\",\n \"description\": \"Status is the status of the condition you'd like to match.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"Ready\",\n \"description\": \"Type indicates the type of condition you'd like to use.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"matchInteger\": {\n \"description\": \"MatchInt is the value you'd like to match if you're using \\\"MatchInt\\\" type.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"matchString\": {\n \"description\": \"MatchString is the value you'd like to match if you're using \\\"MatchString\\\" type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type indicates the type of probe you'd like to use.\",\n \"enum\": [\n \"MatchString\",\n \"MatchInteger\",\n \"NonEmpty\",\n \"MatchCondition\",\n \"MatchTrue\",\n \"MatchFalse\",\n \"None\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"base\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"revision\": {\n \"description\": \"Revision number. Newer revisions have larger numbers.\",\n \"format\": \"int64\",\n \"type\": \"integer\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Value is immutable\",\n \"rule\": \"self == oldSelf\"\n }\n ]\n },\n \"writeConnectionSecretsToNamespace\": {\n \"description\": \"WriteConnectionSecretsToNamespace specifies the namespace in which the\\nconnection secrets of composite resource dynamically provisioned using\\nthis composition will be created.\\nThis field is planned to be replaced in a future release in favor of\\nPublishConnectionDetailsWithStoreConfigRef. Currently, both could be\\nset independently and connection details would be published to both\\nwithout affecting each other as long as related fields at MR level\\nspecified.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"compositeTypeRef\",\n \"revision\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Composition Revision\",\n \"type\": \"object\"\n}",
+ "version": "apiextensions.crossplane.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Composition Revision",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Configuration.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Configuration.json
new file mode 100644
index 00000000000..fad906fcbcf
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Configuration.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Configuration",
+ "schema": "{\n \"description\": \"A Configuration installs an OCI compatible Crossplane package, extending\\nCrossplane with support for new kinds of CompositeResourceDefinitions and\\nCompositions.\\n\\n\\nRead the Crossplane documentation for\\n[more information about Configuration packages](https://docs.crossplane.io/latest/concepts/packages).\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ConfigurationSpec specifies details about a request to install a\\nconfiguration to Crossplane.\",\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n },\n \"ignoreCrossplaneConstraints\": {\n \"default\": false,\n \"description\": \"IgnoreCrossplaneConstraints indicates to the package manager whether to\\nhonor Crossplane version constrains specified by the package.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"package\": {\n \"description\": \"Package is the name of the package that is being requested.\",\n \"type\": \"string\"\n },\n \"packagePullPolicy\": {\n \"default\": \"IfNotPresent\",\n \"description\": \"PackagePullPolicy defines the pull policy for the package.\\nDefault is IfNotPresent.\",\n \"type\": \"string\"\n },\n \"packagePullSecrets\": {\n \"description\": \"PackagePullSecrets are named secrets in the same namespace that can be used\\nto fetch packages from private registries.\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"revisionActivationPolicy\": {\n \"default\": \"Automatic\",\n \"description\": \"RevisionActivationPolicy specifies how the package controller should\\nupdate from one revision to the next. Options are Automatic or Manual.\\nDefault is Automatic.\",\n \"type\": \"string\"\n },\n \"revisionHistoryLimit\": {\n \"default\": 1,\n \"description\": \"RevisionHistoryLimit dictates how the package controller cleans up old\\ninactive package revisions.\\nDefaults to 1. Can be disabled by explicitly setting to 0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"skipDependencyResolution\": {\n \"default\": false,\n \"description\": \"SkipDependencyResolution indicates to the package manager whether to skip\\nresolving dependencies for a package. Setting this value to true may have\\nunintended consequences.\\nDefault is false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"package\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Configuration\",\n \"type\": \"object\"\n}",
+ "version": "pkg.crossplane.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Configuration",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/ConfigurationRevision.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/ConfigurationRevision.json
new file mode 100644
index 00000000000..29c03cd6df0
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/ConfigurationRevision.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ConfigurationRevision",
+ "schema": "{\n \"description\": \"A ConfigurationRevision represents a revision of a Configuration. Crossplane\\ncreates new revisions when there are changes to a Configuration.\\n\\n\\nCrossplane creates and manages ConfigurationRevision. Don't directly edit\\nConfigurationRevisions.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"PackageRevisionSpec specifies the desired state of a PackageRevision.\",\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n },\n \"desiredState\": {\n \"description\": \"DesiredState of the PackageRevision. Can be either Active or Inactive.\",\n \"type\": \"string\"\n },\n \"ignoreCrossplaneConstraints\": {\n \"default\": false,\n \"description\": \"IgnoreCrossplaneConstraints indicates to the package manager whether to\\nhonor Crossplane version constrains specified by the package.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Package image used by install Pod to extract package contents.\",\n \"type\": \"string\"\n },\n \"packagePullPolicy\": {\n \"default\": \"IfNotPresent\",\n \"description\": \"PackagePullPolicy defines the pull policy for the package. It is also\\napplied to any images pulled for the package, such as a provider's\\ncontroller image.\\nDefault is IfNotPresent.\",\n \"type\": \"string\"\n },\n \"packagePullSecrets\": {\n \"description\": \"PackagePullSecrets are named secrets in the same namespace that can be\\nused to fetch packages from private registries. They are also applied to\\nany images pulled for the package, such as a provider's controller image.\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"revision\": {\n \"description\": \"Revision number. Indicates when the revision will be garbage collected\\nbased on the parent's RevisionHistoryLimit.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"skipDependencyResolution\": {\n \"default\": false,\n \"description\": \"SkipDependencyResolution indicates to the package manager whether to skip\\nresolving dependencies for a package. Setting this value to true may have\\nunintended consequences.\\nDefault is false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"desiredState\",\n \"image\",\n \"revision\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Configuration Revision\",\n \"type\": \"object\"\n}",
+ "version": "pkg.crossplane.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Configuration Revision",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/ControllerConfig.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/ControllerConfig.json
new file mode 100644
index 00000000000..86100b280b1
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/ControllerConfig.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ControllerConfig",
+ "schema": "{\n \"description\": \"A ControllerConfig applies settings to controllers like Provider pods.\\nDeprecated: Use the\\n[DeploymentRuntimeConfig](https://docs.crossplane.io/latest/concepts/providers#runtime-configuration)\\ninstead.\\n\\n\\nRead the\\n[Package Runtime Configuration](https://github.com/crossplane/crossplane/blob/11bbe13ea3604928cc4e24e8d0d18f3f5f7e847c/design/one-pager-package-runtime-config.md)\\ndesign document for more details.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ControllerConfigSpec specifies the configuration for a packaged controller.\\nValues provided will override package manager defaults. Labels and\\nannotations are passed to both the controller Deployment and ServiceAccount.\",\n \"properties\": {\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe docker image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax\\ncan be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,\\nregardless of whether the variable exists or not.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Docker image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use. For example,\\nin the case of docker, only DockerConfig type secrets are honored.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\\nSetting ImagePullSecrets will replace any secrets that have been\\npropagated to a controller Deployment, typically via packagePullSecrets.\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"metadata\": {\n \"description\": \"Metadata that will be added to the provider Pod.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be\\nset by external tools to store and retrieve arbitrary metadata. They are not\\nqueryable and should be preserved when modifying objects.\\nMore info: http:https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and\\ncategorize (scope and select) objects. This will only affect\\nlabels on the pod, not the pod selector. Labels will be merged\\nwith internal labels used by crossplane, and labels with a\\ncrossplane.io key might be overwritten.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\"\n },\n \"podSecurityContext\": {\n \"description\": \"PodSecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ports\": {\n \"description\": \"List of container ports to expose on the container\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"description\": \"Number of desired pods. This is a pointer to distinguish between explicit\\nzero and not specified. Defaults to 1.\\nNote: If more than 1 replica is set and leader election is not enabled then\\ncontrollers could conflict. Environment variable \\\"LEADER_ELECTION\\\" can be\\nused to enable leader election process.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/585-runtime-class/README.md\\nThis is a beta feature as of Kubernetes v1.14.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds container-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\\nIf specified, a ServiceAccount named this ServiceAccountName will be used for\\nthe spec.serviceAccountName field in Pods to be created and for the subjects.name field\\nin a ClusterRoleBinding to be created.\\nIf there is no ServiceAccount named this ServiceAccountName, a new ServiceAccount\\nwill be created.\\nIf there is a pre-existing ServiceAccount named this ServiceAccountName, the ServiceAccount\\nwill be used. The annotations in the ControllerConfig will be copied to the ServiceAccount\\nand pre-existing annotations will be kept.\\nRegardless of whether there is a ServiceAccount created by Crossplane or is in place already,\\nthe ServiceAccount will be deleted once the Provider and ControllerConfig are deleted.\",\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"List of VolumeMounts to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Controller Config\",\n \"type\": \"object\"\n}",
+ "version": "pkg.crossplane.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Controller Config",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/DeploymentRuntimeConfig.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/DeploymentRuntimeConfig.json
new file mode 100644
index 00000000000..37c9fd335b7
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/DeploymentRuntimeConfig.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "DeploymentRuntimeConfig",
+ "schema": "{\n \"description\": \"The DeploymentRuntimeConfig provides settings for the Kubernetes Deployment\\nof a Provider or composition function package.\\n\\n\\nRead the Crossplane documentation for\\n[more information about DeploymentRuntimeConfigs](https://docs.crossplane.io/latest/concepts/providers/#runtime-configuration).\",\n \"properties\": {\n \"spec\": {\n \"description\": \"DeploymentRuntimeConfigSpec specifies the configuration for a packaged controller.\\nValues provided will override package manager defaults. Labels and\\nannotations are passed to both the controller Deployment and ServiceAccount.\",\n \"properties\": {\n \"deploymentTemplate\": {\n \"description\": \"DeploymentTemplate is the template for the Deployment object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Metadata contains the configurable metadata fields for the Deployment.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that\\nmay be set by external tools to store and retrieve arbitrary metadata.\\nThey are not queryable and should be preserved when modifying objects.\\nMore info: http:https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. Labels will be merged with internal labels\\nused by crossplane, and labels with a crossplane.io key might be\\noverwritten.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name is the name of the object.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec contains the configurable spec fields for the Deployment object.\",\n \"properties\": {\n \"minReadySeconds\": {\n \"description\": \"Minimum number of seconds for which a newly created pod should be ready\\nwithout any of its container crashing, for it to be considered available.\\nDefaults to 0 (pod will be considered available as soon as it is ready)\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"paused\": {\n \"description\": \"Indicates that the deployment is paused.\",\n \"type\": \"boolean\"\n },\n \"progressDeadlineSeconds\": {\n \"description\": \"The maximum time in seconds for a deployment to make progress before it\\nis considered to be failed. The deployment controller will continue to\\nprocess failed deployments and a condition with a ProgressDeadlineExceeded\\nreason will be surfaced in the deployment status. Note that progress will\\nnot be estimated during the time a deployment is paused. Defaults to 600s.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"replicas\": {\n \"description\": \"Number of desired pods. This is a pointer to distinguish between explicit\\nzero and not specified. Defaults to 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"revisionHistoryLimit\": {\n \"description\": \"The number of old ReplicaSets to retain to allow rollback.\\nThis is a pointer to distinguish between explicit zero and not specified.\\nDefaults to 10.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"selector\": {\n \"description\": \"Label selector for pods. Existing ReplicaSets whose pods are\\nselected by this will be the ones affected by this deployment.\\nIt must match the pod template's labels.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"strategy\": {\n \"description\": \"The deployment strategy to use to replace existing pods with new ones.\",\n \"properties\": {\n \"rollingUpdate\": {\n \"description\": \"Rolling update config params. Present only if DeploymentStrategyType =\\nRollingUpdate.\\n---\\nTODO: Update this to follow our convention for oneOf, whatever we decide it\\nto be.\",\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be scheduled above the desired number of\\npods.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nThis can not be 0 if MaxUnavailable is 0.\\nAbsolute number is calculated from percentage by rounding up.\\nDefaults to 25%.\\nExample: when this is set to 30%, the new ReplicaSet can be scaled up immediately when\\nthe rolling update starts, such that the total number of old and new pods do not exceed\\n130% of desired pods. Once old pods have been killed,\\nnew ReplicaSet can be scaled up further, ensuring that total number of pods running\\nat any time during the update is at most 130% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be unavailable during the update.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nAbsolute number is calculated from percentage by rounding down.\\nThis can not be 0 if MaxSurge is 0.\\nDefaults to 25%.\\nExample: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods\\nimmediately when the rolling update starts. Once new pods are ready, old ReplicaSet\\ncan be scaled down further, followed by scaling up the new ReplicaSet, ensuring\\nthat the total number of pods available at all times during the update is at\\nleast 70% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of deployment. Can be \\\"Recreate\\\" or \\\"RollingUpdate\\\". Default is RollingUpdate.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"template\": {\n \"description\": \"Template describes the pods that will be created.\\nThe only allowed template.spec.restartPolicy value is \\\"Always\\\".\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"selector\",\n \"template\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountTemplate\": {\n \"description\": \"ServiceAccountTemplate is the template for the ServiceAccount object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Metadata contains the configurable metadata fields for the ServiceAccount.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that\\nmay be set by external tools to store and retrieve arbitrary metadata.\\nThey are not queryable and should be preserved when modifying objects.\\nMore info: http:https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. Labels will be merged with internal labels\\nused by crossplane, and labels with a crossplane.io key might be\\noverwritten.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name is the name of the object.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceTemplate\": {\n \"description\": \"ServiceTemplate is the template for the Service object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Metadata contains the configurable metadata fields for the Service.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that\\nmay be set by external tools to store and retrieve arbitrary metadata.\\nThey are not queryable and should be preserved when modifying objects.\\nMore info: http:https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. Labels will be merged with internal labels\\nused by crossplane, and labels with a crossplane.io key might be\\noverwritten.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name is the name of the object.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Deployment Runtime Config\",\n \"type\": \"object\"\n}",
+ "version": "pkg.crossplane.io/v1beta1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Deployment Runtime Config",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/EnvironmentConfig.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/EnvironmentConfig.json
new file mode 100644
index 00000000000..61636ad10ea
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/EnvironmentConfig.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "EnvironmentConfig",
+ "schema": "{\n \"description\": \"An EnvironmentConfig contains user-defined unstructured values for\\nuse in a Composition.\\n\\n\\nRead the Crossplane documentation for\\n[more information about EnvironmentConfigs](https://docs.crossplane.io/latest/concepts/environment-configs).\",\n \"properties\": {\n \"data\": {\n \"additionalProperties\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"description\": \"The data of this EnvironmentConfig.\\nThis may contain any kind of structure that can be serialized into JSON.\",\n \"type\": \"object\"\n }\n },\n \"title\": \"Environment Config\",\n \"type\": \"object\"\n}",
+ "version": "apiextensions.crossplane.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Environment Config",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Function.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Function.json
new file mode 100644
index 00000000000..9ca584bcc6f
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Function.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Function",
+ "schema": "{\n \"description\": \"A Function installs an OCI compatible Crossplane package, extending\\nCrossplane with support for a new kind of composition function.\\n\\n\\nRead the Crossplane documentation for\\n[more information about Functions](https://docs.crossplane.io/latest/concepts/composition-functions).\",\n \"properties\": {\n \"spec\": {\n \"description\": \"FunctionSpec specifies the configuration of a Function.\",\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n },\n \"controllerConfigRef\": {\n \"description\": \"ControllerConfigRef references a ControllerConfig resource that will be\\nused to configure the packaged controller Deployment.\\nDeprecated: Use RuntimeConfigReference instead.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the ControllerConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"ignoreCrossplaneConstraints\": {\n \"default\": false,\n \"description\": \"IgnoreCrossplaneConstraints indicates to the package manager whether to\\nhonor Crossplane version constrains specified by the package.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"package\": {\n \"description\": \"Package is the name of the package that is being requested.\",\n \"type\": \"string\"\n },\n \"packagePullPolicy\": {\n \"default\": \"IfNotPresent\",\n \"description\": \"PackagePullPolicy defines the pull policy for the package.\\nDefault is IfNotPresent.\",\n \"type\": \"string\"\n },\n \"packagePullSecrets\": {\n \"description\": \"PackagePullSecrets are named secrets in the same namespace that can be used\\nto fetch packages from private registries.\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"revisionActivationPolicy\": {\n \"default\": \"Automatic\",\n \"description\": \"RevisionActivationPolicy specifies how the package controller should\\nupdate from one revision to the next. Options are Automatic or Manual.\\nDefault is Automatic.\",\n \"type\": \"string\"\n },\n \"revisionHistoryLimit\": {\n \"default\": 1,\n \"description\": \"RevisionHistoryLimit dictates how the package controller cleans up old\\ninactive package revisions.\\nDefaults to 1. Can be disabled by explicitly setting to 0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runtimeConfigRef\": {\n \"default\": {\n \"name\": \"default\"\n },\n \"description\": \"RuntimeConfigRef references a RuntimeConfig resource that will be used\\nto configure the package runtime.\",\n \"properties\": {\n \"apiVersion\": {\n \"default\": \"pkg.crossplane.io/v1beta1\",\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"default\": \"DeploymentRuntimeConfig\",\n \"description\": \"Kind of the referent.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the RuntimeConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"skipDependencyResolution\": {\n \"default\": false,\n \"description\": \"SkipDependencyResolution indicates to the package manager whether to skip\\nresolving dependencies for a package. Setting this value to true may have\\nunintended consequences.\\nDefault is false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"package\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Function\",\n \"type\": \"object\"\n}",
+ "version": "pkg.crossplane.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Function",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/FunctionRevision.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/FunctionRevision.json
new file mode 100644
index 00000000000..e7f23b16de2
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/FunctionRevision.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "FunctionRevision",
+ "schema": "{\n \"description\": \"A FunctionRevision represents a revision of a Function. Crossplane\\ncreates new revisions when there are changes to the Function.\\n\\n\\nCrossplane creates and manages FunctionRevisions. Don't directly edit\\nFunctionRevisions.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"FunctionRevisionSpec specifies configuration for a FunctionRevision.\",\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n },\n \"controllerConfigRef\": {\n \"description\": \"ControllerConfigRef references a ControllerConfig resource that will be\\nused to configure the packaged controller Deployment.\\nDeprecated: Use RuntimeConfigReference instead.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the ControllerConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"desiredState\": {\n \"description\": \"DesiredState of the PackageRevision. Can be either Active or Inactive.\",\n \"type\": \"string\"\n },\n \"ignoreCrossplaneConstraints\": {\n \"default\": false,\n \"description\": \"IgnoreCrossplaneConstraints indicates to the package manager whether to\\nhonor Crossplane version constrains specified by the package.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Package image used by install Pod to extract package contents.\",\n \"type\": \"string\"\n },\n \"packagePullPolicy\": {\n \"default\": \"IfNotPresent\",\n \"description\": \"PackagePullPolicy defines the pull policy for the package. It is also\\napplied to any images pulled for the package, such as a provider's\\ncontroller image.\\nDefault is IfNotPresent.\",\n \"type\": \"string\"\n },\n \"packagePullSecrets\": {\n \"description\": \"PackagePullSecrets are named secrets in the same namespace that can be\\nused to fetch packages from private registries. They are also applied to\\nany images pulled for the package, such as a provider's controller image.\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"revision\": {\n \"description\": \"Revision number. Indicates when the revision will be garbage collected\\nbased on the parent's RevisionHistoryLimit.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runtimeConfigRef\": {\n \"default\": {\n \"name\": \"default\"\n },\n \"description\": \"RuntimeConfigRef references a RuntimeConfig resource that will be used\\nto configure the package runtime.\",\n \"properties\": {\n \"apiVersion\": {\n \"default\": \"pkg.crossplane.io/v1beta1\",\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"default\": \"DeploymentRuntimeConfig\",\n \"description\": \"Kind of the referent.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the RuntimeConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"skipDependencyResolution\": {\n \"default\": false,\n \"description\": \"SkipDependencyResolution indicates to the package manager whether to skip\\nresolving dependencies for a package. Setting this value to true may have\\nunintended consequences.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"tlsClientSecretName\": {\n \"description\": \"TLSClientSecretName is the name of the TLS Secret that stores client\\ncertificates of the Provider.\",\n \"type\": \"string\"\n },\n \"tlsServerSecretName\": {\n \"description\": \"TLSServerSecretName is the name of the TLS Secret that stores server\\ncertificates of the Provider.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"desiredState\",\n \"image\",\n \"revision\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Function Revision\",\n \"type\": \"object\"\n}",
+ "version": "pkg.crossplane.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Function Revision",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Lock.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Lock.json
new file mode 100644
index 00000000000..2c794950031
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Lock.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Lock",
+ "schema": "{\n \"description\": \"Lock is the CRD type that tracks package dependencies.\",\n \"properties\": {\n \"packages\": {\n \"items\": {\n \"description\": \"LockPackage is a package that is in the lock.\",\n \"properties\": {\n \"dependencies\": {\n \"description\": \"Dependencies are the list of dependencies of this package. The order of\\nthe dependencies will dictate the order in which they are resolved.\",\n \"items\": {\n \"description\": \"A Dependency is a dependency of a package in the lock.\",\n \"properties\": {\n \"constraints\": {\n \"description\": \"Constraints is a valid semver range, which will be used to select a valid\\ndependency version.\",\n \"type\": \"string\"\n },\n \"package\": {\n \"description\": \"Package is the OCI image name without a tag or digest.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of package. Can be either Configuration or Provider.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"constraints\",\n \"package\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name corresponds to the name of the package revision for this package.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source is the OCI image name without a tag or digest.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of package. Can be either Configuration or Provider.\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"Version is the tag or digest of the OCI image.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"dependencies\",\n \"name\",\n \"source\",\n \"type\",\n \"version\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"title\": \"Lock\",\n \"type\": \"object\"\n}",
+ "version": "pkg.crossplane.io/v1beta1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Lock",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Provider.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Provider.json
new file mode 100644
index 00000000000..050e9df1cab
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Provider.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Provider",
+ "schema": "{\n \"description\": \"A Provider installs an OCI compatible Crossplane package, extending\\nCrossplane with support for new kinds of managed resources.\\n\\n\\nRead the Crossplane documentation for\\n[more information about Providers](https://docs.crossplane.io/latest/concepts/providers).\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ProviderSpec specifies details about a request to install a provider to\\nCrossplane.\",\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n },\n \"controllerConfigRef\": {\n \"description\": \"ControllerConfigRef references a ControllerConfig resource that will be\\nused to configure the packaged controller Deployment.\\nDeprecated: Use RuntimeConfigReference instead.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the ControllerConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"ignoreCrossplaneConstraints\": {\n \"default\": false,\n \"description\": \"IgnoreCrossplaneConstraints indicates to the package manager whether to\\nhonor Crossplane version constrains specified by the package.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"package\": {\n \"description\": \"Package is the name of the package that is being requested.\",\n \"type\": \"string\"\n },\n \"packagePullPolicy\": {\n \"default\": \"IfNotPresent\",\n \"description\": \"PackagePullPolicy defines the pull policy for the package.\\nDefault is IfNotPresent.\",\n \"type\": \"string\"\n },\n \"packagePullSecrets\": {\n \"description\": \"PackagePullSecrets are named secrets in the same namespace that can be used\\nto fetch packages from private registries.\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"revisionActivationPolicy\": {\n \"default\": \"Automatic\",\n \"description\": \"RevisionActivationPolicy specifies how the package controller should\\nupdate from one revision to the next. Options are Automatic or Manual.\\nDefault is Automatic.\",\n \"type\": \"string\"\n },\n \"revisionHistoryLimit\": {\n \"default\": 1,\n \"description\": \"RevisionHistoryLimit dictates how the package controller cleans up old\\ninactive package revisions.\\nDefaults to 1. Can be disabled by explicitly setting to 0.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runtimeConfigRef\": {\n \"default\": {\n \"name\": \"default\"\n },\n \"description\": \"RuntimeConfigRef references a RuntimeConfig resource that will be used\\nto configure the package runtime.\",\n \"properties\": {\n \"apiVersion\": {\n \"default\": \"pkg.crossplane.io/v1beta1\",\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"default\": \"DeploymentRuntimeConfig\",\n \"description\": \"Kind of the referent.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the RuntimeConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"skipDependencyResolution\": {\n \"default\": false,\n \"description\": \"SkipDependencyResolution indicates to the package manager whether to skip\\nresolving dependencies for a package. Setting this value to true may have\\nunintended consequences.\\nDefault is false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"package\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Provider\",\n \"type\": \"object\"\n}",
+ "version": "pkg.crossplane.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Provider",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/ProviderRevision.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/ProviderRevision.json
new file mode 100644
index 00000000000..e08fab95aa5
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/ProviderRevision.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ProviderRevision",
+ "schema": "{\n \"description\": \"A ProviderRevision represents a revision of a Provider. Crossplane\\ncreates new revisions when there are changes to a Provider.\\n\\n\\nCrossplane creates and manages ProviderRevisions. Don't directly edit\\nProviderRevisions.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ProviderRevisionSpec specifies configuration for a ProviderRevision.\",\n \"properties\": {\n \"commonLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize\\n(scope and select) objects. May match selectors of replication controllers\\nand services.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n \"type\": \"object\"\n },\n \"controllerConfigRef\": {\n \"description\": \"ControllerConfigRef references a ControllerConfig resource that will be\\nused to configure the packaged controller Deployment.\\nDeprecated: Use RuntimeConfigReference instead.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the ControllerConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"desiredState\": {\n \"description\": \"DesiredState of the PackageRevision. Can be either Active or Inactive.\",\n \"type\": \"string\"\n },\n \"ignoreCrossplaneConstraints\": {\n \"default\": false,\n \"description\": \"IgnoreCrossplaneConstraints indicates to the package manager whether to\\nhonor Crossplane version constrains specified by the package.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"image\": {\n \"description\": \"Package image used by install Pod to extract package contents.\",\n \"type\": \"string\"\n },\n \"packagePullPolicy\": {\n \"default\": \"IfNotPresent\",\n \"description\": \"PackagePullPolicy defines the pull policy for the package. It is also\\napplied to any images pulled for the package, such as a provider's\\ncontroller image.\\nDefault is IfNotPresent.\",\n \"type\": \"string\"\n },\n \"packagePullSecrets\": {\n \"description\": \"PackagePullSecrets are named secrets in the same namespace that can be\\nused to fetch packages from private registries. They are also applied to\\nany images pulled for the package, such as a provider's controller image.\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"revision\": {\n \"description\": \"Revision number. Indicates when the revision will be garbage collected\\nbased on the parent's RevisionHistoryLimit.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runtimeConfigRef\": {\n \"default\": {\n \"name\": \"default\"\n },\n \"description\": \"RuntimeConfigRef references a RuntimeConfig resource that will be used\\nto configure the package runtime.\",\n \"properties\": {\n \"apiVersion\": {\n \"default\": \"pkg.crossplane.io/v1beta1\",\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"default\": \"DeploymentRuntimeConfig\",\n \"description\": \"Kind of the referent.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the RuntimeConfig.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"skipDependencyResolution\": {\n \"default\": false,\n \"description\": \"SkipDependencyResolution indicates to the package manager whether to skip\\nresolving dependencies for a package. Setting this value to true may have\\nunintended consequences.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"tlsClientSecretName\": {\n \"description\": \"TLSClientSecretName is the name of the TLS Secret that stores client\\ncertificates of the Provider.\",\n \"type\": \"string\"\n },\n \"tlsServerSecretName\": {\n \"description\": \"TLSServerSecretName is the name of the TLS Secret that stores server\\ncertificates of the Provider.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"desiredState\",\n \"image\",\n \"revision\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Provider Revision\",\n \"type\": \"object\"\n}",
+ "version": "pkg.crossplane.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Provider Revision",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/StoreConfig.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/StoreConfig.json
new file mode 100644
index 00000000000..ac94a8696ee
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/StoreConfig.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "StoreConfig",
+ "schema": "{\n \"description\": \"A StoreConfig configures how Crossplane controllers should store connection\\ndetails in an external secret store.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"A StoreConfigSpec defines the desired state of a StoreConfig.\",\n \"properties\": {\n \"defaultScope\": {\n \"description\": \"DefaultScope used for scoping secrets for \\\"cluster-scoped\\\" resources.\\nIf store type is \\\"Kubernetes\\\", this would mean the default namespace to\\nstore connection secrets for cluster scoped resources.\\nIn case of \\\"Vault\\\", this would be used as the default parent path.\\nTypically, should be set as Crossplane installation namespace.\",\n \"type\": \"string\"\n },\n \"kubernetes\": {\n \"description\": \"Kubernetes configures a Kubernetes secret store.\\nIf the \\\"type\\\" is \\\"Kubernetes\\\" but no config provided, in cluster config\\nwill be used.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Credentials used to connect to the Kubernetes API.\",\n \"properties\": {\n \"env\": {\n \"description\": \"Env is a reference to an environment variable that contains credentials\\nthat must be used to connect to the provider.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of an environment variable.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"fs\": {\n \"description\": \"Fs is a reference to a filesystem location that contains credentials that\\nmust be used to connect to the provider.\",\n \"properties\": {\n \"path\": {\n \"description\": \"Path is a filesystem path.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"description\": \"A SecretRef is a reference to a secret key that contains the credentials\\nthat must be used to connect to the provider.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the secret.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"name\",\n \"namespace\"\n ],\n \"type\": \"object\"\n },\n \"source\": {\n \"description\": \"Source of the credentials.\",\n \"enum\": [\n \"None\",\n \"Secret\",\n \"Environment\",\n \"Filesystem\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"source\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"auth\"\n ],\n \"type\": \"object\"\n },\n \"plugin\": {\n \"description\": \"Plugin configures External secret store as a plugin.\",\n \"properties\": {\n \"configRef\": {\n \"description\": \"ConfigRef contains store config reference info.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion of the referenced config.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referenced config.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referenced config.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"endpoint\": {\n \"description\": \"Endpoint is the endpoint of the gRPC server.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"Kubernetes\",\n \"description\": \"Type configures which secret store to be used. Only the configuration\\nblock for this store will be used and others will be ignored if provided.\\nDefault is Kubernetes.\",\n \"enum\": [\n \"Kubernetes\",\n \"Vault\",\n \"Plugin\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"defaultScope\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Store Config\",\n \"type\": \"object\"\n}",
+ "version": "secrets.crossplane.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Store Config",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Usage.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Usage.json
new file mode 100644
index 00000000000..04f58627e0c
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/components/Usage.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Usage",
+ "schema": "{\n \"description\": \"A Usage defines a deletion blocking relationship between two resources.\\n\\n\\nUsages prevent accidental deletion of a single resource or deletion of\\nresources with dependent resources.\\n\\n\\nRead the Crossplane documentation for\\n[more information about Compositions](https://docs.crossplane.io/latest/concepts/usages).\",\n \"properties\": {\n \"spec\": {\n \"description\": \"UsageSpec defines the desired state of Usage.\",\n \"properties\": {\n \"by\": {\n \"description\": \"By is the resource that is \\\"using the other resource\\\".\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"resourceRef\": {\n \"description\": \"Reference to the resource.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resourceSelector\": {\n \"description\": \"Selector to the resource.\\nThis field will be ignored if ResourceRef is set.\",\n \"properties\": {\n \"matchControllerRef\": {\n \"description\": \"MatchControllerRef ensures an object with the same controller reference\\nas the selecting object is selected.\",\n \"type\": \"boolean\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"MatchLabels ensures an object with matching labels is selected.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"either a resource reference or a resource selector should be set.\",\n \"rule\": \"has(self.resourceRef) || has(self.resourceSelector)\"\n }\n ]\n },\n \"of\": {\n \"description\": \"Of is the resource that is \\\"being used\\\".\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"resourceRef\": {\n \"description\": \"Reference to the resource.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resourceSelector\": {\n \"description\": \"Selector to the resource.\\nThis field will be ignored if ResourceRef is set.\",\n \"properties\": {\n \"matchControllerRef\": {\n \"description\": \"MatchControllerRef ensures an object with the same controller reference\\nas the selecting object is selected.\",\n \"type\": \"boolean\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"MatchLabels ensures an object with matching labels is selected.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"either a resource reference or a resource selector should be set.\",\n \"rule\": \"has(self.resourceRef) || has(self.resourceSelector)\"\n }\n ]\n },\n \"reason\": {\n \"description\": \"Reason is the reason for blocking deletion of the resource.\",\n \"type\": \"string\"\n },\n \"replayDeletion\": {\n \"description\": \"ReplayDeletion will trigger a deletion on the used resource during the deletion of the usage itself, if it was attempted to be deleted at least once.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"of\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"either \\\"spec.by\\\" or \\\"spec.reason\\\" must be specified.\",\n \"rule\": \"has(self.by) || has(self.reason)\"\n }\n ]\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Usage\",\n \"type\": \"object\"\n}",
+ "version": "apiextensions.crossplane.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Usage",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/crossplane/crossplane/master/cluster/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath id=\"clip-path\"\u003e\u003cpath class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-2\"\u003e\u003cpath class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-3\"\u003e\u003crect class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-4\"\u003e\u003crect class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-5\"\u003e\u003crect class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-7\"\u003e\u003crect class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-8\"\u003e\u003crect class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-11\"\u003e\u003crect class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-12\"\u003e\u003crect class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"/\u003e\u003c/clipPath\u003e\u003cclipPath id=\"clip-path-14\"\u003e\u003cpolygon class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg class=\"cls-2\"\u003e\u003crect class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"/\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-6\"\u003e\u003cg class=\"cls-7\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-10\"\u003e\u003cg class=\"cls-11\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-4\"\u003e\u003cg class=\"cls-5\"\u003e\u003cg class=\"cls-13\"\u003e\u003cg class=\"cls-14\"\u003e\u003cg class=\"cls-8\"\u003e\u003crect class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg class=\"cls-16\"\u003e\u003crect class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"/\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 900 900\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/model.json b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/model.json
new file mode 100644
index 00000000000..37a5c7880c5
--- /dev/null
+++ b/server/meshmodel/crossplane/v1.17.0-rc.1/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "Crossplane",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#ffcd3c",
+ "secondaryColor": "#35d0ba",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#f7d186;}.cls-4{clip-path:url(#clip-path-2);}.cls-5{isolation:isolate;}.cls-6{clip-path:url(#clip-path-3);}.cls-7{clip-path:url(#clip-path-4);}.cls-8{clip-path:url(#clip-path-5);}.cls-9{fill:#ffcd3c;}.cls-10{clip-path:url(#clip-path-7);}.cls-11{clip-path:url(#clip-path-8);}.cls-12{fill:#f3807b;}.cls-13{clip-path:url(#clip-path-11);}.cls-14{clip-path:url(#clip-path-12);}.cls-15{fill:#35d0ba;}.cls-16{clip-path:url(#clip-path-14);}.cls-17{fill:#d8ae64;}\u003c/style\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M447.73,309.78a46.75981,46.75981,0,0,0-46.76,46.76V796.58a46.76,46.76,0,0,0,93.52,0V356.55a46.75555,46.75555,0,0,0-46.76-46.77\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M263.62,234.54q-.195,4.305-.2,8.68c0,3.19.07,6.35.24,9.5-.07,1.55-.24,3.08-.24,4.66V563.56c0,58.55,47.91,106.46,106.46,106.46H530.1c58.56,0,106.46-47.91,106.46-106.46V257.37c0-1.78-.18-3.51-.28-5.26.14-2.95.22-5.92.22-8.89,0-2.92-.07-5.8-.2-8.68C631.8,135.53,550.1,56.66,449.98,56.66,349.85,56.66,268.14,135.53,263.62,234.54Z\"\u003e\u003c/path\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-3\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"142.32001\" y=\"97.05\" width=\"606.10999\" height=\"606.10997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-4\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"121.45167\" y=\"305.6912\" width=\"654.37372\" height=\"195.51814\" transform=\"translate(-153.87924 435.4032) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-5\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"260.91\" y=\"50.92997\" width=\"382.11002\" height=\"619.28997\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-7\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-22.38\" y=\"-67.66\" width=\"639.04998\" height=\"639.05002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"-32.95044\" y=\"128.3843\" width=\"654.3837\" height=\"241.17767\" transform=\"translate(-89.86928 280.98264) rotate(-45)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-11\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"280.67001\" y=\"235.39999\" width=\"606.11002\" height=\"606.11002\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-12\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"258.77901\" y=\"443.79101\" width=\"654.39197\" height=\"193.81798\" transform=\"translate(-210.70418 572.72293) rotate(-45.00062)\"\u003e\u003c/rect\u003e\u003c/clipPath\u003e\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip-path-14\"\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"412.96 670.01 494.5 752.9 494.5 670.01 412.96 670.01\"\u003e\u003c/polygon\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" x=\"368.03\" y=\"276.84\" width=\"159.41\" height=\"599.44003\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" x=\"115.65\" y=\"70.36997\" width=\"665.66\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" x=\"-55.32999\" y=\"-100.60001\" width=\"699.14\" height=\"699.14004\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" x=\"253.14\" y=\"207.87\" width=\"665.65999\" height=\"665.65997\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003c/g\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\"\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" x=\"380.69\" y=\"636.90997\" width=\"147.02997\" height=\"147.66998\"\u003e\u003c/rect\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 900 900\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M471.22288,669.71789V790.45608c0,16.82419-10.9559,30.52608-24.40691,30.52608-13.46492,0-24.40692-13.68794-24.40692-30.52608V669.71789h48.81383M493.58075,647.36H400.03724V790.45608c0,29.21583,20.93612,52.88395,46.76478,52.88395,25.84261,0,46.76477-23.66812,46.76477-52.88395V647.36Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M588.56,154.07853a163.28343,163.28343,0,0,1,25.82871,81.41674c.11153,2.53688.18121,5.12948.18121,7.70818,0,2.53688-.06968,5.17131-.19517,7.8615l-.05572,1.10116.05572,1.10116c.04186.64119.08363,1.26844.12549,1.90961.05573.8642.12549,1.68661.12549,2.17446v87.68922L323.736,635.93012a85.29961,85.29961,0,0,1-40.19959-72.39831V459.102L588.56,154.07853m2.2999-32.04539L262.50273,450.40425V563.5458c0,43.9631,27.01347,81.91853,65.24768,98.10154L635.64534,353.75239V257.36533c0-1.78417-.18122-3.51259-.2788-5.26888.13936-2.955.223-5.91007.223-8.893q0-4.36982-.19517-8.67a185.61592,185.61592,0,0,0-44.53447-112.50037Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M449.04619,56.66c-100.12264,0-181.83209,78.86594-186.3483,177.87349q-.18816,4.3071-.19516,8.67c0,3.192.06967,6.3561.237,9.50629-.06968,1.56115-.237,3.0805-.237,4.65557V450.32058L590.832,121.99132A186.13267,186.13267,0,0,0,449.04619,56.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M368.95361,669.99664H529.1805c58.55706,0,106.46484-47.90777,106.46484-106.45088V353.04148L327.26255,661.42427A105.43227,105.43227,0,0,0,368.95361,669.99664Z\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.17.0-rc.1"
+ },
+ "name": "crossplane",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Scheduling \u0026 Orchestration",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/AuthorizationPolicy.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/AuthorizationPolicy.json
new file mode 100644
index 00000000000..485be1d7094
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/AuthorizationPolicy.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "AuthorizationPolicy",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"provider\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"provider\"\n ]\n }\n ],\n \"properties\": {\n \"action\": {\n \"description\": \"Optional.\",\n \"enum\": [\n \"ALLOW\",\n \"DENY\",\n \"AUDIT\",\n \"CUSTOM\"\n ],\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Specifies detailed configuration of the CUSTOM action.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Specifies the name of the extension provider.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rules\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"source\": {\n \"description\": \"Source specifies the source of a request.\",\n \"properties\": {\n \"ipBlocks\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"namespaces\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notIpBlocks\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notNamespaces\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notPrincipals\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notRemoteIpBlocks\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notRequestPrincipals\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"principals\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"remoteIpBlocks\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"requestPrincipals\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"to\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"operation\": {\n \"description\": \"Operation specifies the operation of a request.\",\n \"properties\": {\n \"hosts\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notHosts\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notMethods\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notPaths\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notPorts\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"paths\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ports\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"when\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"key\": {\n \"description\": \"The name of an Istio attribute.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"notValues\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"values\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"Optional.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Authorization Policy\",\n \"type\": \"object\"\n}",
+ "version": "security.istio.io/v1beta1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Authorization Policy",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/DestinationRule.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/DestinationRule.json
new file mode 100644
index 00000000000..eee7feb84f8
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/DestinationRule.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "DestinationRule",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html\",\n \"properties\": {\n \"exportTo\": {\n \"description\": \"A list of namespaces to which this destination rule is exported.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"subsets\": {\n \"items\": {\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the subset.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"trafficPolicy\": {\n \"description\": \"Traffic policies that apply to this subset.\",\n \"properties\": {\n \"connectionPool\": {\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of pending HTTP requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of requests to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\"\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\"\n },\n \"probes\": {\n \"type\": \"integer\"\n },\n \"time\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancer\": {\n \"description\": \"Settings controlling the load balancer algorithms.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"properties\": {\n \"consistentHash\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"consistentHash\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"properties\": {\n \"consistentHash\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"consistentHash\"\n ]\n }\n ],\n \"properties\": {\n \"consistentHash\": {\n \"properties\": {\n \"httpCookie\": {\n \"description\": \"Hash based on HTTP cookie.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the cookie.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to set for the cookie.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"ttl\": {\n \"description\": \"Lifetime of the cookie.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpHeaderName\": {\n \"description\": \"Hash based on a specific HTTP header.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"httpQueryParameterName\": {\n \"description\": \"Hash based on a specific HTTP query parameter.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"minimumRingSize\": {\n \"type\": \"integer\"\n },\n \"useSourceIp\": {\n \"description\": \"Hash based on the source IP address.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"localityLbSetting\": {\n \"properties\": {\n \"distribute\": {\n \"description\": \"Optional: only one of distribute or failover can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating locality, '/' separated, e.g.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"to\": {\n \"additionalProperties\": {\n \"type\": \"integer\"\n },\n \"description\": \"Map of upstream localities to traffic distribution weights.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failover\": {\n \"description\": \"Optional: only failover or distribute can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating region.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"to\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"simple\": {\n \"enum\": [\n \"ROUND_ROBIN\",\n \"LEAST_CONN\",\n \"RANDOM\",\n \"PASSTHROUGH\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"outlierDetection\": {\n \"properties\": {\n \"baseEjectionTime\": {\n \"description\": \"Minimum ejection duration.\",\n \"type\": \"string\"\n },\n \"consecutive5xxErrors\": {\n \"description\": \"Number of 5xx errors before a host is ejected from the connection pool.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveErrors\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"consecutiveGatewayErrors\": {\n \"description\": \"Number of gateway errors before a host is ejected from the connection pool.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"Time interval between ejection sweep analysis.\",\n \"type\": \"string\"\n },\n \"maxEjectionPercent\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minHealthPercent\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"portLevelSettings\": {\n \"description\": \"Traffic policies specific to individual ports.\",\n \"items\": {\n \"properties\": {\n \"connectionPool\": {\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of pending HTTP requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of requests to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\"\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\"\n },\n \"probes\": {\n \"type\": \"integer\"\n },\n \"time\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancer\": {\n \"description\": \"Settings controlling the load balancer algorithms.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"properties\": {\n \"consistentHash\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"consistentHash\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"properties\": {\n \"consistentHash\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"consistentHash\"\n ]\n }\n ],\n \"properties\": {\n \"consistentHash\": {\n \"properties\": {\n \"httpCookie\": {\n \"description\": \"Hash based on HTTP cookie.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the cookie.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to set for the cookie.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"ttl\": {\n \"description\": \"Lifetime of the cookie.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpHeaderName\": {\n \"description\": \"Hash based on a specific HTTP header.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"httpQueryParameterName\": {\n \"description\": \"Hash based on a specific HTTP query parameter.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"minimumRingSize\": {\n \"type\": \"integer\"\n },\n \"useSourceIp\": {\n \"description\": \"Hash based on the source IP address.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"localityLbSetting\": {\n \"properties\": {\n \"distribute\": {\n \"description\": \"Optional: only one of distribute or failover can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating locality, '/' separated, e.g.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"to\": {\n \"additionalProperties\": {\n \"type\": \"integer\"\n },\n \"description\": \"Map of upstream localities to traffic distribution weights.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failover\": {\n \"description\": \"Optional: only failover or distribute can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating region.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"to\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"simple\": {\n \"enum\": [\n \"ROUND_ROBIN\",\n \"LEAST_CONN\",\n \"RANDOM\",\n \"PASSTHROUGH\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"outlierDetection\": {\n \"properties\": {\n \"baseEjectionTime\": {\n \"description\": \"Minimum ejection duration.\",\n \"type\": \"string\"\n },\n \"consecutive5xxErrors\": {\n \"description\": \"Number of 5xx errors before a host is ejected from the connection pool.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveErrors\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"consecutiveGatewayErrors\": {\n \"description\": \"Number of gateway errors before a host is ejected from the connection pool.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"Time interval between ejection sweep analysis.\",\n \"type\": \"string\"\n },\n \"maxEjectionPercent\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minHealthPercent\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"properties\": {\n \"number\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS related settings for connections to the upstream service.\",\n \"properties\": {\n \"caCertificates\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"clientCertificate\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"credentialName\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"enum\": [\n \"DISABLE\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"ISTIO_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"SNI string to present to the server during TLS handshake.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tls\": {\n \"description\": \"TLS related settings for connections to the upstream service.\",\n \"properties\": {\n \"caCertificates\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"clientCertificate\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"credentialName\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"enum\": [\n \"DISABLE\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"ISTIO_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"SNI string to present to the server during TLS handshake.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"trafficPolicy\": {\n \"properties\": {\n \"connectionPool\": {\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of pending HTTP requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of requests to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\"\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\"\n },\n \"probes\": {\n \"type\": \"integer\"\n },\n \"time\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancer\": {\n \"description\": \"Settings controlling the load balancer algorithms.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"properties\": {\n \"consistentHash\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"consistentHash\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"properties\": {\n \"consistentHash\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"consistentHash\"\n ]\n }\n ],\n \"properties\": {\n \"consistentHash\": {\n \"properties\": {\n \"httpCookie\": {\n \"description\": \"Hash based on HTTP cookie.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the cookie.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to set for the cookie.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"ttl\": {\n \"description\": \"Lifetime of the cookie.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpHeaderName\": {\n \"description\": \"Hash based on a specific HTTP header.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"httpQueryParameterName\": {\n \"description\": \"Hash based on a specific HTTP query parameter.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"minimumRingSize\": {\n \"type\": \"integer\"\n },\n \"useSourceIp\": {\n \"description\": \"Hash based on the source IP address.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"localityLbSetting\": {\n \"properties\": {\n \"distribute\": {\n \"description\": \"Optional: only one of distribute or failover can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating locality, '/' separated, e.g.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"to\": {\n \"additionalProperties\": {\n \"type\": \"integer\"\n },\n \"description\": \"Map of upstream localities to traffic distribution weights.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failover\": {\n \"description\": \"Optional: only failover or distribute can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating region.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"to\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"simple\": {\n \"enum\": [\n \"ROUND_ROBIN\",\n \"LEAST_CONN\",\n \"RANDOM\",\n \"PASSTHROUGH\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"outlierDetection\": {\n \"properties\": {\n \"baseEjectionTime\": {\n \"description\": \"Minimum ejection duration.\",\n \"type\": \"string\"\n },\n \"consecutive5xxErrors\": {\n \"description\": \"Number of 5xx errors before a host is ejected from the connection pool.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveErrors\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"consecutiveGatewayErrors\": {\n \"description\": \"Number of gateway errors before a host is ejected from the connection pool.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"Time interval between ejection sweep analysis.\",\n \"type\": \"string\"\n },\n \"maxEjectionPercent\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minHealthPercent\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"portLevelSettings\": {\n \"description\": \"Traffic policies specific to individual ports.\",\n \"items\": {\n \"properties\": {\n \"connectionPool\": {\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of pending HTTP requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of requests to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\"\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\"\n },\n \"probes\": {\n \"type\": \"integer\"\n },\n \"time\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancer\": {\n \"description\": \"Settings controlling the load balancer algorithms.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"properties\": {\n \"consistentHash\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"consistentHash\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"properties\": {\n \"consistentHash\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"consistentHash\"\n ]\n }\n ],\n \"properties\": {\n \"consistentHash\": {\n \"properties\": {\n \"httpCookie\": {\n \"description\": \"Hash based on HTTP cookie.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the cookie.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to set for the cookie.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"ttl\": {\n \"description\": \"Lifetime of the cookie.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"httpHeaderName\": {\n \"description\": \"Hash based on a specific HTTP header.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"httpQueryParameterName\": {\n \"description\": \"Hash based on a specific HTTP query parameter.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"minimumRingSize\": {\n \"type\": \"integer\"\n },\n \"useSourceIp\": {\n \"description\": \"Hash based on the source IP address.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"localityLbSetting\": {\n \"properties\": {\n \"distribute\": {\n \"description\": \"Optional: only one of distribute or failover can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating locality, '/' separated, e.g.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"to\": {\n \"additionalProperties\": {\n \"type\": \"integer\"\n },\n \"description\": \"Map of upstream localities to traffic distribution weights.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failover\": {\n \"description\": \"Optional: only failover or distribute can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating region.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"to\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"simple\": {\n \"enum\": [\n \"ROUND_ROBIN\",\n \"LEAST_CONN\",\n \"RANDOM\",\n \"PASSTHROUGH\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"outlierDetection\": {\n \"properties\": {\n \"baseEjectionTime\": {\n \"description\": \"Minimum ejection duration.\",\n \"type\": \"string\"\n },\n \"consecutive5xxErrors\": {\n \"description\": \"Number of 5xx errors before a host is ejected from the connection pool.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveErrors\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"consecutiveGatewayErrors\": {\n \"description\": \"Number of gateway errors before a host is ejected from the connection pool.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"Time interval between ejection sweep analysis.\",\n \"type\": \"string\"\n },\n \"maxEjectionPercent\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minHealthPercent\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"properties\": {\n \"number\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS related settings for connections to the upstream service.\",\n \"properties\": {\n \"caCertificates\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"clientCertificate\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"credentialName\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"enum\": [\n \"DISABLE\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"ISTIO_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"SNI string to present to the server during TLS handshake.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tls\": {\n \"description\": \"TLS related settings for connections to the upstream service.\",\n \"properties\": {\n \"caCertificates\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"clientCertificate\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"credentialName\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"enum\": [\n \"DISABLE\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"ISTIO_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"SNI string to present to the server during TLS handshake.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Destination Rule\",\n \"type\": \"object\"\n}",
+ "version": "networking.istio.io/v1alpha3"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Destination Rule",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/EnvoyFilter.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/EnvoyFilter.json
new file mode 100644
index 00000000000..4760546f480
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/EnvoyFilter.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "EnvoyFilter",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html\",\n \"properties\": {\n \"configPatches\": {\n \"description\": \"One or more patches with match conditions.\",\n \"items\": {\n \"properties\": {\n \"applyTo\": {\n \"enum\": [\n \"INVALID\",\n \"LISTENER\",\n \"FILTER_CHAIN\",\n \"NETWORK_FILTER\",\n \"HTTP_FILTER\",\n \"ROUTE_CONFIGURATION\",\n \"VIRTUAL_HOST\",\n \"HTTP_ROUTE\",\n \"CLUSTER\",\n \"EXTENSION_CONFIG\"\n ],\n \"type\": \"string\"\n },\n \"match\": {\n \"description\": \"Match on listener/route configuration/cluster.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"listener\"\n ]\n },\n {\n \"required\": [\n \"routeConfiguration\"\n ]\n },\n {\n \"required\": [\n \"cluster\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"listener\"\n ]\n },\n {\n \"required\": [\n \"routeConfiguration\"\n ]\n },\n {\n \"required\": [\n \"cluster\"\n ]\n }\n ],\n \"properties\": {\n \"cluster\": {\n \"description\": \"Match on envoy cluster attributes.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The exact name of the cluster to match.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"portNumber\": {\n \"description\": \"The service port for which this cluster was generated.\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"The fully qualified service name for this cluster.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"subset\": {\n \"description\": \"The subset associated with the service.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"context\": {\n \"description\": \"The specific config generation context to match on.\",\n \"enum\": [\n \"ANY\",\n \"SIDECAR_INBOUND\",\n \"SIDECAR_OUTBOUND\",\n \"GATEWAY\"\n ],\n \"type\": \"string\"\n },\n \"listener\": {\n \"description\": \"Match on envoy listener attributes.\",\n \"properties\": {\n \"filterChain\": {\n \"description\": \"Match a specific filter chain in a listener.\",\n \"properties\": {\n \"applicationProtocols\": {\n \"description\": \"Applies only to sidecars.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"destinationPort\": {\n \"description\": \"The destination_port value used by a filter chain's match condition.\",\n \"type\": \"integer\"\n },\n \"filter\": {\n \"description\": \"The name of a specific filter to apply the patch to.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The filter name to match on.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"subFilter\": {\n \"properties\": {\n \"name\": {\n \"description\": \"The filter name to match on.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name assigned to the filter chain.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"The SNI value used by a filter chain's match condition.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"transportProtocol\": {\n \"description\": \"Applies only to `SIDECAR_INBOUND` context.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Match a specific listener by its name.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"portName\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"portNumber\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"proxy\": {\n \"description\": \"Match on properties associated with a proxy.\",\n \"properties\": {\n \"metadata\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"proxyVersion\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"routeConfiguration\": {\n \"description\": \"Match on envoy HTTP route configuration attributes.\",\n \"properties\": {\n \"gateway\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Route configuration name to match on.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"portName\": {\n \"description\": \"Applicable only for GATEWAY context.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"portNumber\": {\n \"type\": \"integer\"\n },\n \"vhost\": {\n \"properties\": {\n \"name\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"route\": {\n \"description\": \"Match a specific route within the virtual host.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Match a route with specific action type.\",\n \"enum\": [\n \"ANY\",\n \"ROUTE\",\n \"REDIRECT\",\n \"DIRECT_RESPONSE\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"patch\": {\n \"description\": \"The patch to apply along with the operation.\",\n \"properties\": {\n \"filterClass\": {\n \"description\": \"Determines the filter insertion order.\",\n \"enum\": [\n \"UNSPECIFIED\",\n \"AUTHN\",\n \"AUTHZ\",\n \"STATS\"\n ],\n \"type\": \"string\"\n },\n \"operation\": {\n \"description\": \"Determines how the patch should be applied.\",\n \"enum\": [\n \"INVALID\",\n \"MERGE\",\n \"ADD\",\n \"REMOVE\",\n \"INSERT_BEFORE\",\n \"INSERT_AFTER\",\n \"INSERT_FIRST\",\n \"REPLACE\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The JSON config of the object being patched.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workloadSelector\": {\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Envoy Filter\",\n \"type\": \"object\"\n}",
+ "version": "networking.istio.io/v1alpha3"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Envoy Filter",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/Gateway.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/Gateway.json
new file mode 100644
index 00000000000..b82a3ee56de
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/Gateway.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Gateway",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html\",\n \"properties\": {\n \"selector\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"servers\": {\n \"description\": \"A list of server specifications.\",\n \"items\": {\n \"properties\": {\n \"bind\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"defaultEndpoint\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"hosts\": {\n \"description\": \"One or more hosts exposed by this gateway.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"An optional name of the server, when set must be unique across all servers.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Label assigned to the port.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"A valid non-negative integer port number.\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"description\": \"The protocol exposed on the port.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"Set of TLS related options that govern the server's behavior.\",\n \"properties\": {\n \"caCertificates\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"cipherSuites\": {\n \"description\": \"Optional: If specified, only support the specified cipher list.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"credentialName\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"httpsRedirect\": {\n \"type\": \"boolean\"\n },\n \"maxProtocolVersion\": {\n \"description\": \"Optional: Maximum TLS protocol version.\",\n \"enum\": [\n \"TLS_AUTO\",\n \"TLSV1_0\",\n \"TLSV1_1\",\n \"TLSV1_2\",\n \"TLSV1_3\"\n ],\n \"type\": \"string\"\n },\n \"minProtocolVersion\": {\n \"description\": \"Optional: Minimum TLS protocol version.\",\n \"enum\": [\n \"TLS_AUTO\",\n \"TLSV1_0\",\n \"TLSV1_1\",\n \"TLSV1_2\",\n \"TLSV1_3\"\n ],\n \"type\": \"string\"\n },\n \"mode\": {\n \"enum\": [\n \"PASSTHROUGH\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"AUTO_PASSTHROUGH\",\n \"ISTIO_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `SIMPLE` or `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"serverCertificate\": {\n \"description\": \"REQUIRED if mode is `SIMPLE` or `MUTUAL`.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"verifyCertificateHash\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"verifyCertificateSpki\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Gateway\",\n \"type\": \"object\"\n}",
+ "version": "networking.istio.io/v1alpha3"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Gateway",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/IstioOperator.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/IstioOperator.json
new file mode 100644
index 00000000000..7a51191f2a3
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/IstioOperator.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "IstioOperator",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Specification of the desired state of the istio control plane resource. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"type\": \"object\"\n }\n },\n \"title\": \"Istio Operator\"\n}",
+ "version": "install.istio.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Istio Operator",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/PeerAuthentication.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/PeerAuthentication.json
new file mode 100644
index 00000000000..28ef9a73e0e
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/PeerAuthentication.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "PeerAuthentication",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.\",\n \"properties\": {\n \"mtls\": {\n \"description\": \"Mutual TLS settings for workload.\",\n \"properties\": {\n \"mode\": {\n \"description\": \"Defines the mTLS mode used for peer authentication.\",\n \"enum\": [\n \"UNSET\",\n \"DISABLE\",\n \"PERMISSIVE\",\n \"STRICT\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"portLevelMtls\": {\n \"additionalProperties\": {\n \"properties\": {\n \"mode\": {\n \"description\": \"Defines the mTLS mode used for peer authentication.\",\n \"enum\": [\n \"UNSET\",\n \"DISABLE\",\n \"PERMISSIVE\",\n \"STRICT\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": \"Port specific mutual TLS settings.\",\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"The selector determines the workloads to apply the ChannelAuthentication on.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Peer Authentication\",\n \"type\": \"object\"\n}",
+ "version": "security.istio.io/v1beta1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Peer Authentication",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/RequestAuthentication.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/RequestAuthentication.json
new file mode 100644
index 00000000000..6c11285be9e
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/RequestAuthentication.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "RequestAuthentication",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"RequestAuthentication defines what request authentication methods are supported by a workload.\",\n \"properties\": {\n \"jwtRules\": {\n \"description\": \"Define the list of JWTs that can be validated at the selected workloads' proxy.\",\n \"items\": {\n \"properties\": {\n \"audiences\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"forwardOriginalToken\": {\n \"description\": \"If set to true, the orginal token will be kept for the ustream request.\",\n \"type\": \"boolean\"\n },\n \"fromHeaders\": {\n \"description\": \"List of header locations from which JWT is expected.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"The HTTP header name.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"description\": \"The prefix that should be stripped before decoding the token.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"fromParams\": {\n \"description\": \"List of query parameters from which JWT is expected.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"issuer\": {\n \"description\": \"Identifies the issuer that issued the JWT.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"jwks\": {\n \"description\": \"JSON Web Key Set of public keys to validate signature of the JWT.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"jwksUri\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"jwks_uri\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"outputPayloadToHeader\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"The selector determines the workloads to apply the RequestAuthentication on.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Request Authentication\",\n \"type\": \"object\"\n}",
+ "version": "security.istio.io/v1beta1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Request Authentication",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/ServiceEntry.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/ServiceEntry.json
new file mode 100644
index 00000000000..4df69d3121b
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/ServiceEntry.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ServiceEntry",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html\",\n \"properties\": {\n \"addresses\": {\n \"description\": \"The virtual IP addresses associated with the service.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"endpoints\": {\n \"description\": \"One or more endpoints associated with the service.\",\n \"items\": {\n \"properties\": {\n \"address\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"description\": \"One or more labels associated with the endpoint.\",\n \"type\": \"object\"\n },\n \"locality\": {\n \"description\": \"The locality associated with the endpoint.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"network\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"additionalProperties\": {\n \"type\": \"integer\"\n },\n \"description\": \"Set of ports associated with the endpoint.\",\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"weight\": {\n \"description\": \"The load balancing weight associated with the endpoint.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"exportTo\": {\n \"description\": \"A list of namespaces to which this service is exported.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hosts\": {\n \"description\": \"The hosts associated with the ServiceEntry.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"location\": {\n \"enum\": [\n \"MESH_EXTERNAL\",\n \"MESH_INTERNAL\"\n ],\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"The ports associated with the external service.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Label assigned to the port.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"A valid non-negative integer port number.\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"description\": \"The protocol exposed on the port.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resolution\": {\n \"description\": \"Service discovery mode for the hosts.\",\n \"enum\": [\n \"NONE\",\n \"STATIC\",\n \"DNS\"\n ],\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"workloadSelector\": {\n \"description\": \"Applicable only for MESH_INTERNAL services.\",\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Service Entry\",\n \"type\": \"object\"\n}",
+ "version": "networking.istio.io/v1alpha3"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Service Entry",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/Sidecar.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/Sidecar.json
new file mode 100644
index 00000000000..f78f4e3d5bf
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/Sidecar.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Sidecar",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html\",\n \"properties\": {\n \"egress\": {\n \"items\": {\n \"properties\": {\n \"bind\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"captureMode\": {\n \"enum\": [\n \"DEFAULT\",\n \"IPTABLES\",\n \"NONE\"\n ],\n \"type\": \"string\"\n },\n \"hosts\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"The port associated with the listener.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Label assigned to the port.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"A valid non-negative integer port number.\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"description\": \"The protocol exposed on the port.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"ingress\": {\n \"items\": {\n \"properties\": {\n \"bind\": {\n \"description\": \"The IP to which the listener should be bound.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"captureMode\": {\n \"enum\": [\n \"DEFAULT\",\n \"IPTABLES\",\n \"NONE\"\n ],\n \"type\": \"string\"\n },\n \"defaultEndpoint\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"The port associated with the listener.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Label assigned to the port.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"A valid non-negative integer port number.\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"description\": \"The protocol exposed on the port.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"outboundTrafficPolicy\": {\n \"description\": \"Configuration for the outbound traffic policy.\",\n \"properties\": {\n \"egressProxy\": {\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"mode\": {\n \"enum\": [\n \"REGISTRY_ONLY\",\n \"ALLOW_ANY\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"workloadSelector\": {\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Sidecar\",\n \"type\": \"object\"\n}",
+ "version": "networking.istio.io/v1alpha3"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Sidecar",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/VirtualService.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/VirtualService.json
new file mode 100644
index 00000000000..fa6cb34b581
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/VirtualService.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "VirtualService",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html\",\n \"properties\": {\n \"exportTo\": {\n \"description\": \"A list of namespaces to which this virtual service is exported.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"gateways\": {\n \"description\": \"The names of gateways and sidecars that should apply these routes.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hosts\": {\n \"description\": \"The destination hosts to which traffic is being sent.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"http\": {\n \"description\": \"An ordered list of route rules for HTTP traffic.\",\n \"items\": {\n \"properties\": {\n \"corsPolicy\": {\n \"description\": \"Cross-Origin Resource Sharing policy (CORS).\",\n \"properties\": {\n \"allowCredentials\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowHeaders\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowMethods\": {\n \"description\": \"List of HTTP methods allowed to access the resource.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOrigin\": {\n \"description\": \"The list of origins that are allowed to perform CORS requests.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOrigins\": {\n \"description\": \"String patterns that match allowed origins.\",\n \"items\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"exposeHeaders\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxAge\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"delegate\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Name specifies the name of the delegate VirtualService.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace specifies the namespace where the delegate VirtualService resides.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"fault\": {\n \"description\": \"Fault injection policy to apply on HTTP traffic at the client side.\",\n \"properties\": {\n \"abort\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpStatus\"\n ]\n },\n {\n \"required\": [\n \"grpcStatus\"\n ]\n },\n {\n \"required\": [\n \"http2Error\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpStatus\"\n ]\n },\n {\n \"required\": [\n \"grpcStatus\"\n ]\n },\n {\n \"required\": [\n \"http2Error\"\n ]\n }\n ],\n \"properties\": {\n \"grpcStatus\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"http2Error\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"httpStatus\": {\n \"description\": \"HTTP status code to use to abort the Http request.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"percentage\": {\n \"description\": \"Percentage of requests to be aborted with the error code provided.\",\n \"properties\": {\n \"value\": {\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"delay\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"fixedDelay\"\n ]\n },\n {\n \"required\": [\n \"exponentialDelay\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"fixedDelay\"\n ]\n },\n {\n \"required\": [\n \"exponentialDelay\"\n ]\n }\n ],\n \"properties\": {\n \"exponentialDelay\": {\n \"type\": \"string\"\n },\n \"fixedDelay\": {\n \"description\": \"Add a fixed delay before forwarding the request.\",\n \"type\": \"string\"\n },\n \"percent\": {\n \"description\": \"Percentage of requests on which the delay will be injected (0-100).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"percentage\": {\n \"description\": \"Percentage of requests on which the delay will be injected.\",\n \"properties\": {\n \"value\": {\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"properties\": {\n \"request\": {\n \"properties\": {\n \"add\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"remove\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"set\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"add\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"remove\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"set\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"match\": {\n \"items\": {\n \"properties\": {\n \"authority\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gateways\": {\n \"description\": \"Names of gateways where the rule should be applied.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"ignoreUriCase\": {\n \"description\": \"Flag to specify whether the URI matching should be case-insensitive.\",\n \"type\": \"boolean\"\n },\n \"method\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name assigned to a match.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the ports on the host that is being addressed.\",\n \"type\": \"integer\"\n },\n \"queryParams\": {\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": \"Query parameters for matching.\",\n \"type\": \"object\"\n },\n \"scheme\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceLabels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"sourceNamespace\": {\n \"description\": \"Source namespace constraining the applicability of a rule to workloads in that namespace.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"withoutHeaders\": {\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": \"withoutHeader has the same syntax with the header, but has opposite meaning.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"mirror\": {\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"mirrorPercent\": {\n \"description\": \"Percentage of the traffic to be mirrored by the `mirror` field.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"mirrorPercentage\": {\n \"description\": \"Percentage of the traffic to be mirrored by the `mirror` field.\",\n \"properties\": {\n \"value\": {\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"mirror_percent\": {\n \"description\": \"Percentage of the traffic to be mirrored by the `mirror` field.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"The name assigned to the route for debugging purposes.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"redirect\": {\n \"description\": \"A HTTP rule can either redirect or forward (default) traffic.\",\n \"properties\": {\n \"authority\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"redirectCode\": {\n \"type\": \"integer\"\n },\n \"uri\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retries\": {\n \"description\": \"Retry policy for HTTP requests.\",\n \"properties\": {\n \"attempts\": {\n \"description\": \"Number of retries to be allowed for a given request.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"perTryTimeout\": {\n \"description\": \"Timeout per attempt for a given request, including the initial call and any retries.\",\n \"type\": \"string\"\n },\n \"retryOn\": {\n \"description\": \"Specifies the conditions under which retry takes place.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"retryRemoteLocalities\": {\n \"description\": \"Flag to specify whether the retries should retry to other localities.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"rewrite\": {\n \"description\": \"Rewrite HTTP URIs and Authority headers.\",\n \"properties\": {\n \"authority\": {\n \"description\": \"rewrite the Authority/Host header with this value.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"route\": {\n \"description\": \"A HTTP rule can either redirect or forward (default) traffic.\",\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"properties\": {\n \"request\": {\n \"properties\": {\n \"add\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"remove\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"set\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"add\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"remove\": {\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"set\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"timeout\": {\n \"description\": \"Timeout for HTTP requests, default is disabled.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tcp\": {\n \"description\": \"An ordered list of route rules for opaque TCP traffic.\",\n \"items\": {\n \"properties\": {\n \"match\": {\n \"items\": {\n \"properties\": {\n \"destinationSubnets\": {\n \"description\": \"IPv4 or IPv6 ip addresses of destination with optional subnet.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"gateways\": {\n \"description\": \"Names of gateways where the rule should be applied.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"type\": \"integer\"\n },\n \"sourceLabels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"sourceNamespace\": {\n \"description\": \"Source namespace constraining the applicability of a rule to workloads in that namespace.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"sourceSubnet\": {\n \"description\": \"IPv4 or IPv6 ip address of source with optional subnet.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"route\": {\n \"description\": \"The destination to which the connection should be forwarded to.\",\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tls\": {\n \"items\": {\n \"properties\": {\n \"match\": {\n \"items\": {\n \"properties\": {\n \"destinationSubnets\": {\n \"description\": \"IPv4 or IPv6 ip addresses of destination with optional subnet.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"gateways\": {\n \"description\": \"Names of gateways where the rule should be applied.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"type\": \"integer\"\n },\n \"sniHosts\": {\n \"description\": \"SNI (server name indicator) to match on.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sourceLabels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"sourceNamespace\": {\n \"description\": \"Source namespace constraining the applicability of a rule to workloads in that namespace.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"route\": {\n \"description\": \"The destination to which the connection should be forwarded to.\",\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Virtual Service\",\n \"type\": \"object\"\n}",
+ "version": "networking.istio.io/v1alpha3"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Virtual Service",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/WorkloadEntry.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/WorkloadEntry.json
new file mode 100644
index 00000000000..34e39340164
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/WorkloadEntry.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "WorkloadEntry",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html\",\n \"properties\": {\n \"address\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"description\": \"One or more labels associated with the endpoint.\",\n \"type\": \"object\"\n },\n \"locality\": {\n \"description\": \"The locality associated with the endpoint.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"network\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"additionalProperties\": {\n \"type\": \"integer\"\n },\n \"description\": \"Set of ports associated with the endpoint.\",\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"weight\": {\n \"description\": \"The load balancing weight associated with the endpoint.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Workload Entry\",\n \"type\": \"object\"\n}",
+ "version": "networking.istio.io/v1alpha3"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Workload Entry",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/WorkloadGroup.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/WorkloadGroup.json
new file mode 100644
index 00000000000..2fe12acc882
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/components/WorkloadGroup.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "WorkloadGroup",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Metadata that will be used for all corresponding `WorkloadEntries`.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"probe\": {\n \"description\": \"`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpGet\"\n ]\n },\n {\n \"required\": [\n \"tcpSocket\"\n ]\n },\n {\n \"required\": [\n \"exec\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpGet\"\n ]\n },\n {\n \"required\": [\n \"tcpSocket\"\n ]\n },\n {\n \"required\": [\n \"exec\"\n ]\n }\n ],\n \"properties\": {\n \"exec\": {\n \"description\": \"Health is determined by how the command that is executed exited.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command to run.\",\n \"items\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Headers the proxy will pass on to make the request.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"value\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Port on which the endpoint lives.\",\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"format\": \"string\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before readiness probes are initiated.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"Health is determined by if the proxy is able to connect.\",\n \"properties\": {\n \"host\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"port\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"template\": {\n \"description\": \"Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.\",\n \"properties\": {\n \"address\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"description\": \"One or more labels associated with the endpoint.\",\n \"type\": \"object\"\n },\n \"locality\": {\n \"description\": \"The locality associated with the endpoint.\",\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"network\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"additionalProperties\": {\n \"type\": \"integer\"\n },\n \"description\": \"Set of ports associated with the endpoint.\",\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"format\": \"string\",\n \"type\": \"string\"\n },\n \"weight\": {\n \"description\": \"The load balancing weight associated with the endpoint.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Workload Group\",\n \"type\": \"object\"\n}",
+ "version": "networking.istio.io/v1alpha3"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Workload Group",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "source_uri": "git://github.com/curiefense/curiefense/main/deploy/istio-helm/charts/base/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"161\" height=\"206\" viewBox=\"0 0 161 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"/\u003e\n\u003cpath d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"/\u003e\n\u003cpath d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.8\" fill=\"white\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"162\" height=\"206\" viewBox=\"0 0 162 206\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cg clip-path=\"url(#clip0)\"\u003e\n\u003cpath d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"/\u003e\n\u003cpath d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"/\u003e\n\u003c/g\u003e\n\u003cdefs\u003e\n\u003cclipPath id=\"clip0\"\u003e\n\u003crect width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"/\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/curiefense/v1.5.0/v1.0.0/model.json b/server/meshmodel/curiefense/v1.5.0/v1.0.0/model.json
new file mode 100644
index 00000000000..d58c2a949f4
--- /dev/null
+++ b/server/meshmodel/curiefense/v1.5.0/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Curiefense",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#26becd",
+ "secondaryColor": "#3cc5d2",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 161 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M160.9 45.7V103.7C160.9 138.4 130.3 176.1 85.4 198.4V130.1L98 131.4C106.2 132.2 119.8 127.6 130 114.4C130.5 113.7 130.9 113.1 131.3 112.6C131.9 111.7 132.4 110.8 132.8 109.8L132.9 109.7C132.9 109.7 134.3 107.1 134.7 106.2C139.5 94.9 140.6 75.9 127.5 63.8C131.3 86.3 113.9 91.8 113.9 91.8C113.9 91.8 114 91.6 114.2 91.3C117 86.4 116.6 80.3 113.4 75.7C109.3 83.8 106.3 85.5 101.8 86.5L85.5 79.4V0L160.9 45.7Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.5 59.8001L26.1 143.2H42.7L73.9 128.9L75.5 129.1V205.8C30.6 183.5 0 145.7 0 111.1V53.0001L75.5 17.1001V59.8001Z\" fill=\"#26BECD\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M94.8 104.9C97.3957 104.9 99.5 102.796 99.5 100.2C99.5 97.6043 97.3957 95.5 94.8 95.5C92.2043 95.5 90.1 97.6043 90.1 100.2C90.1 102.796 92.2043 104.9 94.8 104.9Z\" fill=\"#436DB4\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.8\" fill=\"white\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 162 206\" fill=\"none\"\u003e\n\u003cg xmlns=\"http://www.w3.org/2000/svg\" clip-path=\"url(#clip0)\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M161.3 45.7V103.7C161.3 138.4 130.7 176.1 85.7999 198.4V130.1L98.3999 131.4C106.6 132.2 120.2 127.6 130.4 114.4C130.9 113.7 131.3 113.1 131.7 112.6C132.3 111.7 132.8 110.8 133.2 109.8L133.3 109.7C133.3 109.7 134.7 107.1 135.1 106.2C139.9 94.9 141 75.9 127.9 63.8C131.7 86.3 114.3 91.8 114.3 91.8C114.3 91.8 114.4 91.6 114.6 91.3C117.4 86.4 117 80.3 113.8 75.7C109.7 83.8 106.7 85.5 102.2 86.5L85.8999 79.4V0L161.3 45.7Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M75.8999 59.8L26.4999 143.3H43.0999L74.2999 129L75.8999 129.2V205.9C30.9999 183.6 0.399902 145.8 0.399902 111.2V53.0999L75.8999 17.2V59.8V59.8Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M95.1999 104.9C97.7957 104.9 99.8999 102.796 99.8999 100.2C99.8999 97.6042 97.7957 95.5 95.1999 95.5C92.6042 95.5 90.4999 97.6042 90.4999 100.2C90.4999 102.796 92.6042 104.9 95.1999 104.9Z\" fill=\"white\"\u003e\u003c/path\u003e\n\u003c/g\u003e\n\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cclipPath xmlns=\"http://www.w3.org/2000/svg\" id=\"clip0\"\u003e\n\u003crect xmlns=\"http://www.w3.org/2000/svg\" width=\"160.9\" height=\"205.9\" fill=\"white\" transform=\"translate(0.399902)\"\u003e\u003c/rect\u003e\n\u003c/clipPath\u003e\n\u003c/defs\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.5.0"
+ },
+ "name": "curiefense",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Security \u0026 Compliance",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgent.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgent.json
new file mode 100644
index 00000000000..8e6df650a27
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgent.json
@@ -0,0 +1,195 @@
+{
+ "capabilities": [
+ {
+ "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.",
+ "displayName": "Performance Test",
+ "entityState": [
+ "instance"
+ ],
+ "key": "",
+ "kind": "action",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "perf-test",
+ "type": "operator",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the workload specific setting of a component",
+ "displayName": "Workload Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "config",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure Labels And Annotations for the component ",
+ "displayName": "Labels and Annotations Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "labels-and-annotations",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View relationships for the component",
+ "displayName": "Relationships",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "relationship",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View Component Definition ",
+ "displayName": "Json Schema",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "definition",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the visual styles for the component",
+ "displayName": "Styling",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Change the shape of the component",
+ "displayName": "Change Shape",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "shape",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Drag and Drop a component into a parent component in graph view",
+ "displayName": "Compound Drag And Drop",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "interaction",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "compoundDnd",
+ "type": "graph",
+ "version": "0.7.0"
+ }
+ ],
+ "component": {
+ "kind": "DatadogAgent",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"features\": {\n \"properties\": {\n \"admissionController\": {\n \"properties\": {\n \"agentCommunicationMode\": {\n \"type\": \"string\"\n },\n \"agentSidecarInjection\": {\n \"properties\": {\n \"clusterAgentCommunicationEnabled\": {\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"properties\": {\n \"jmxEnabled\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"type\": \"string\"\n },\n \"pullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"tag\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"profiles\": {\n \"items\": {\n \"properties\": {\n \"env\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"properties\": {\n \"configMapKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"provider\": {\n \"type\": \"string\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"selectors\": {\n \"items\": {\n \"properties\": {\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"objectSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"cwsInstrumentation\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"failurePolicy\": {\n \"type\": \"string\"\n },\n \"mutateUnlabelled\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"webhookName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"apm\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"hostPortConfig\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"hostPort\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"instrumentation\": {\n \"properties\": {\n \"disabledNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"enabledNamespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"languageDetection\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"libVersions\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"unixDomainSocketConfig\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"asm\": {\n \"properties\": {\n \"iast\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"sca\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"threats\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"autoscaling\": {\n \"properties\": {\n \"workload\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"clusterChecks\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"useClusterChecksRunners\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"cspm\": {\n \"properties\": {\n \"checkInterval\": {\n \"type\": \"string\"\n },\n \"customBenchmarks\": {\n \"properties\": {\n \"configData\": {\n \"type\": \"string\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"hostBenchmarks\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"cws\": {\n \"properties\": {\n \"customPolicies\": {\n \"properties\": {\n \"configData\": {\n \"type\": \"string\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"network\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"remoteConfiguration\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"securityProfiles\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"syscallMonitorEnabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"dogstatsd\": {\n \"properties\": {\n \"hostPortConfig\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"hostPort\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"mapperProfiles\": {\n \"properties\": {\n \"configData\": {\n \"type\": \"string\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"originDetectionEnabled\": {\n \"type\": \"boolean\"\n },\n \"tagCardinality\": {\n \"type\": \"string\"\n },\n \"unixDomainSocketConfig\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ebpfCheck\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"eventCollection\": {\n \"properties\": {\n \"collectKubernetesEvents\": {\n \"type\": \"boolean\"\n },\n \"collectedEventTypes\": {\n \"items\": {\n \"properties\": {\n \"kind\": {\n \"type\": \"string\"\n },\n \"reasons\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"kind\",\n \"reasons\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"unbundleEvents\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"externalMetricsServer\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"endpoint\": {\n \"properties\": {\n \"credentials\": {\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"apiSecret\": {\n \"properties\": {\n \"keyName\": {\n \"type\": \"string\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"appKey\": {\n \"type\": \"string\"\n },\n \"appSecret\": {\n \"properties\": {\n \"keyName\": {\n \"type\": \"string\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"registerAPIService\": {\n \"type\": \"boolean\"\n },\n \"useDatadogMetrics\": {\n \"type\": \"boolean\"\n },\n \"wpaController\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"helmCheck\": {\n \"properties\": {\n \"collectEvents\": {\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"valuesAsTags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kubeStateMetricsCore\": {\n \"properties\": {\n \"conf\": {\n \"properties\": {\n \"configData\": {\n \"type\": \"string\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"liveContainerCollection\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"liveProcessCollection\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"scrubProcessArguments\": {\n \"type\": \"boolean\"\n },\n \"stripProcessArguments\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"logCollection\": {\n \"properties\": {\n \"containerCollectAll\": {\n \"type\": \"boolean\"\n },\n \"containerCollectUsingFiles\": {\n \"type\": \"boolean\"\n },\n \"containerLogsPath\": {\n \"type\": \"string\"\n },\n \"containerSymlinksPath\": {\n \"type\": \"string\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"openFilesLimit\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"podLogsPath\": {\n \"type\": \"string\"\n },\n \"tempStoragePath\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"npm\": {\n \"properties\": {\n \"collectDNSStats\": {\n \"type\": \"boolean\"\n },\n \"enableConntrack\": {\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"oomKill\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"orchestratorExplorer\": {\n \"properties\": {\n \"conf\": {\n \"properties\": {\n \"configData\": {\n \"type\": \"string\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"customResources\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"ddUrl\": {\n \"type\": \"string\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"extraTags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"scrubContainers\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"otlp\": {\n \"properties\": {\n \"receiver\": {\n \"properties\": {\n \"protocols\": {\n \"properties\": {\n \"grpc\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"endpoint\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"http\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"endpoint\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"processDiscovery\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"prometheusScrape\": {\n \"properties\": {\n \"additionalConfigs\": {\n \"type\": \"string\"\n },\n \"enableServiceEndpoints\": {\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"version\": {\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"remoteConfiguration\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"sbom\": {\n \"properties\": {\n \"containerImage\": {\n \"properties\": {\n \"analyzers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"overlayFSDirectScan\": {\n \"type\": \"boolean\"\n },\n \"uncompressedLayersSupport\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"host\": {\n \"properties\": {\n \"analyzers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tcpQueueLength\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"usm\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"global\": {\n \"properties\": {\n \"clusterAgentToken\": {\n \"type\": \"string\"\n },\n \"clusterAgentTokenSecret\": {\n \"properties\": {\n \"keyName\": {\n \"type\": \"string\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"type\": \"string\"\n },\n \"containerStrategy\": {\n \"type\": \"string\"\n },\n \"credentials\": {\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"apiSecret\": {\n \"properties\": {\n \"keyName\": {\n \"type\": \"string\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"appKey\": {\n \"type\": \"string\"\n },\n \"appSecret\": {\n \"properties\": {\n \"keyName\": {\n \"type\": \"string\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"criSocketPath\": {\n \"type\": \"string\"\n },\n \"disableNonResourceRules\": {\n \"type\": \"boolean\"\n },\n \"dockerSocketPath\": {\n \"type\": \"string\"\n },\n \"endpoint\": {\n \"properties\": {\n \"credentials\": {\n \"properties\": {\n \"apiKey\": {\n \"type\": \"string\"\n },\n \"apiSecret\": {\n \"properties\": {\n \"keyName\": {\n \"type\": \"string\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"appKey\": {\n \"type\": \"string\"\n },\n \"appSecret\": {\n \"properties\": {\n \"keyName\": {\n \"type\": \"string\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"fips\": {\n \"properties\": {\n \"customFIPSConfig\": {\n \"properties\": {\n \"configData\": {\n \"type\": \"string\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"properties\": {\n \"jmxEnabled\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"type\": \"string\"\n },\n \"pullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"tag\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"localAddress\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portRange\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"useHTTPS\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"kubelet\": {\n \"properties\": {\n \"agentCAPath\": {\n \"type\": \"string\"\n },\n \"host\": {\n \"properties\": {\n \"configMapKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"hostCAPath\": {\n \"type\": \"string\"\n },\n \"tlsVerify\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"localService\": {\n \"properties\": {\n \"forceEnableLocalService\": {\n \"type\": \"boolean\"\n },\n \"nameOverride\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"logLevel\": {\n \"type\": \"string\"\n },\n \"namespaceAnnotationsAsTags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"namespaceLabelsAsTags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"networkPolicy\": {\n \"properties\": {\n \"create\": {\n \"type\": \"boolean\"\n },\n \"dnsSelectorEndpoints\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"flavor\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeLabelsAsTags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"originDetectionUnified\": {\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"podAnnotationsAsTags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"podLabelsAsTags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"site\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n }\n },\n \"type\": \"object\"\n },\n \"override\": {\n \"additionalProperties\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"containers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"appArmorProfileName\": {\n \"type\": \"string\"\n },\n \"args\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"properties\": {\n \"configMapKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"healthPort\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"logLevel\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readinessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompConfig\": {\n \"properties\": {\n \"customProfile\": {\n \"properties\": {\n \"configData\": {\n \"type\": \"string\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"customRootPath\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\",\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"createRbac\": {\n \"type\": \"boolean\"\n },\n \"customConfigurations\": {\n \"additionalProperties\": {\n \"properties\": {\n \"configData\": {\n \"type\": \"string\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n },\n \"disabled\": {\n \"type\": \"boolean\"\n },\n \"dnsConfig\": {\n \"properties\": {\n \"nameservers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"searches\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"type\": \"string\"\n },\n \"env\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"properties\": {\n \"configMapKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"extraChecksd\": {\n \"properties\": {\n \"configDataMap\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extraConfd\": {\n \"properties\": {\n \"configDataMap\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"key\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"hostNetwork\": {\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"properties\": {\n \"jmxEnabled\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"pullPolicy\": {\n \"type\": \"string\"\n },\n \"pullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n },\n \"tag\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"priorityClassName\": {\n \"type\": \"string\"\n },\n \"replicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountName\": {\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"updateStrategy\": {\n \"properties\": {\n \"rollingUpdate\": {\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Datadog Agent\",\n \"type\": \"object\"\n}",
+ "version": "datadoghq.com/v2alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Datadog Agent",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#00B39F",
+ "secondaryColor": "#00D3A9",
+ "shape": "round-rectangle",
+ "svgColor": "",
+ "svgWhite": ""
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgentProfile.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgentProfile.json
new file mode 100644
index 00000000000..afe7b4e8918
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogAgentProfile.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "DatadogAgentProfile",
+ "schema": "{\n \"description\": \"DatadogAgentProfile is the Schema for the datadogagentprofiles API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"DatadogAgentProfileSpec defines the desired state of DatadogAgentProfile\",\n \"properties\": {\n \"config\": {\n \"properties\": {\n \"override\": {\n \"additionalProperties\": {\n \"properties\": {\n \"containers\": {\n \"additionalProperties\": {\n \"properties\": {\n \"env\": {\n \"description\": \"Specify additional environment variables in the container.\\nSee also: https://docs.datadoghq.com/agent/guide/environment-variables/\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Add other useful fields. apiVersion, kind, uid?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"resources\": {\n \"description\": \"Specify the Request and Limits of the pods.\\nTo get guaranteed QoS class, specify requests and limits equal.\\nSee also: http://kubernetes.io/docs/user-guide/compute-resources/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": \"Configure the basic configurations for an Agent container\\nValid Agent container names are: `agent`\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels provide labels that are added to the Datadog Agent pods.\",\n \"type\": \"object\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"profileAffinity\": {\n \"properties\": {\n \"profileNodeAffinity\": {\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Datadog Agent Profile\",\n \"type\": \"object\"\n}",
+ "version": "datadoghq.com/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Datadog Agent Profile",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMetric.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMetric.json
new file mode 100644
index 00000000000..71e45138b67
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMetric.json
@@ -0,0 +1,195 @@
+{
+ "capabilities": [
+ {
+ "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.",
+ "displayName": "Performance Test",
+ "entityState": [
+ "instance"
+ ],
+ "key": "",
+ "kind": "action",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "perf-test",
+ "type": "operator",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the workload specific setting of a component",
+ "displayName": "Workload Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "config",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure Labels And Annotations for the component ",
+ "displayName": "Labels and Annotations Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "labels-and-annotations",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View relationships for the component",
+ "displayName": "Relationships",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "relationship",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View Component Definition ",
+ "displayName": "Json Schema",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "definition",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the visual styles for the component",
+ "displayName": "Styling",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Change the shape of the component",
+ "displayName": "Change Shape",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "shape",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Drag and Drop a component into a parent component in graph view",
+ "displayName": "Compound Drag And Drop",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "interaction",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "compoundDnd",
+ "type": "graph",
+ "version": "0.7.0"
+ }
+ ],
+ "component": {
+ "kind": "DatadogMetric",
+ "schema": "{\n \"description\": \"DatadogMetric allows autoscaling on arbitrary Datadog query\",\n \"properties\": {\n \"spec\": {\n \"description\": \"DatadogMetricSpec defines the desired state of DatadogMetric\",\n \"properties\": {\n \"externalMetricName\": {\n \"description\": \"ExternalMetricName is reserved for internal use\",\n \"type\": \"string\"\n },\n \"maxAge\": {\n \"description\": \"MaxAge provides the max age for the metric query (overrides the default setting\\n`external_metrics_provider.max_age`)\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query is the raw datadog query\",\n \"type\": \"string\"\n },\n \"timeWindow\": {\n \"description\": \"TimeWindow provides the time window for the metric query, defaults to MaxAge.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Datadog Metric\",\n \"type\": \"object\"\n}",
+ "version": "datadoghq.com/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Datadog Metric",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#00B39F",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 134.95 135.02\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#00d3a9}.cls-2{fill:#00b39f}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003emeshery-logo-light\u003c/title\u003e\u003cpolygon points=\"69.49 31.82 69.49 64.07 97.44 47.89 69.49 31.82\" class=\"cls-1\"/\u003e\u003cpolygon points=\"69.49 70.81 69.49 103.22 97.7 87.09 69.49 70.81\" class=\"cls-1\"/\u003e\u003cpolygon points=\"65.47 63.85 65.47 32.09 37.87 47.92 65.47 63.85\" class=\"cls-2\"/\u003e\u003cpath d=\"M10.1,103.1a67.79,67.79,0,0,0,21.41,21.55V90.71Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"65.47 103.06 65.47 71.05 37.8 87.07 65.47 103.06\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 122.63 63.56 106.61 35.54 90.41 35.54 122.63\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 122.8 99.61 90.63 71.63 106.63 99.61 122.8\" class=\"cls-2\"/\u003e\u003cpath d=\"M127,99.37a67.22,67.22,0,0,0,7.91-28.94L105.78,87.11Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"103.64 83.69 131.76 67.61 103.64 51.45 103.64 83.69\" class=\"cls-1\"/\u003e\u003cpolygon points=\"99.61 44.5 99.61 12.52 71.76 28.49 99.61 44.5\" class=\"cls-2\"/\u003e\u003cpolygon points=\"99.61 83.55 99.61 51.28 71.7 67.44 99.61 83.55\" class=\"cls-2\"/\u003e\u003cpolygon points=\"67.48 135.02 67.49 135.02 67.48 135.02 67.48 135.02\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 51.22 35.54 83.73 63.66 67.45 35.54 51.22\" class=\"cls-1\"/\u003e\u003cpath d=\"M65.47,0A67.2,67.2,0,0,0,35.83,7.83l29.64,17Z\" class=\"cls-2\"/\u003e\u003cpolygon points=\"35.54 12.3 35.54 44.62 63.68 28.48 35.54 12.3\" class=\"cls-1\"/\u003e\u003cpath d=\"M31.51,10.34A67.89,67.89,0,0,0,10.1,31.89L31.51,44.25Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M99.43,8A67.23,67.23,0,0,0,69.49,0V25.15Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M0,69.87A67.27,67.27,0,0,0,8.07,99.63L29.76,87.07Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M8.07,35.37A67.16,67.16,0,0,0,0,65L29.79,47.91Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M35.78,127.13A67.13,67.13,0,0,0,65.47,135V110.15Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M124.92,32a67.9,67.9,0,0,0-21.28-21.52V44.3Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M103.64,124.54A68,68,0,0,0,125,102.86L103.64,90.52Z\" class=\"cls-1\"/\u003e\u003cpath d=\"M135,64.81a67.06,67.06,0,0,0-8-29.35L105.49,47.88Z\" class=\"cls-2\"/\u003e\u003cpath d=\"M69.49,135a67.12,67.12,0,0,0,29.63-7.83L69.49,110Z\" class=\"cls-1\"/\u003e\u003cpolygon points=\"31.51 83.44 31.51 51.56 3.83 67.43 31.51 83.44\" class=\"cls-2\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M16.405 8.732v6.57l5.694-3.297-5.694-3.273Zm0 7.942v6.602l5.747-3.285-5.747-3.317Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 15.256v-6.47l-5.622 3.225 5.622 3.245ZM4.307 23.252a13.809 13.809 0 0 0 4.362 4.39v-6.914l-4.362 2.524Zm11.279-.008v-6.52L9.95 19.985l5.636 3.258Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m9.49 27.23 5.707-3.263-5.707-3.3v6.563Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.54 27.265v-6.553l-5.699 3.259 5.7 3.294Zm5.58-4.773a13.697 13.697 0 0 0 1.612-5.895l-5.934 3.397 4.323 2.498Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"m23.362 19.298 5.728-3.276-5.728-3.291v6.567Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M22.541 11.315V4.8l-5.673 3.253 5.673 3.262Zm0 7.955v-6.574l-5.685 3.292 5.685 3.281Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 12.684v6.622l5.728-3.316-5.728-3.306Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M15.586 2.25a13.69 13.69 0 0 0-6.037 1.595l6.037 3.463V2.25Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M9.49 4.756v6.583l5.732-3.288L9.49 4.756Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 4.356a13.83 13.83 0 0 0-4.362 4.39l4.362 2.518V4.356Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M22.504 3.88a13.695 13.695 0 0 0-6.099-1.63v5.123l6.1-3.493ZM2.25 16.483c.071 2.12.634 4.196 1.644 6.062l4.418-2.559-6.062-3.503Zm1.644-7.028a13.68 13.68 0 0 0-1.644 6.036l6.068-3.482-4.424-2.554Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M9.539 28.147a13.673 13.673 0 0 0 6.047 1.603v-5.062L9.54 28.147Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M27.697 8.768a13.83 13.83 0 0 0-4.335-4.383v6.889l4.335-2.506ZM23.362 27.62a13.851 13.851 0 0 0 4.351-4.417l-4.351-2.514v6.93Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M29.75 15.452a13.659 13.659 0 0 0-1.63-5.979l-4.381 2.53 6.011 3.45Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003cpath d=\"M16.405 29.75a13.673 13.673 0 0 0 6.036-1.595l-6.036-3.498v5.093Z\" fill=\"#fff\"/\u003e\u003cpath d=\"M8.669 19.247v-6.494L3.03 15.986l5.639 3.261Z\" fill=\"#fff\" fill-opacity=\".8\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMonitor.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMonitor.json
new file mode 100644
index 00000000000..5a9b795a49c
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogMonitor.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "DatadogMonitor",
+ "schema": "{\n \"description\": \"DatadogMonitor allows to define and manage Monitors from your Kubernetes Cluster\",\n \"properties\": {\n \"spec\": {\n \"description\": \"DatadogMonitorSpec defines the desired state of DatadogMonitor\",\n \"properties\": {\n \"controllerOptions\": {\n \"description\": \"ControllerOptions are the optional parameters in the DatadogMonitor controller\",\n \"properties\": {\n \"disableRequiredTags\": {\n \"description\": \"DisableRequiredTags disables the automatic addition of required tags to monitors.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"message\": {\n \"description\": \"Message is a message to include with notifications for this monitor\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the monitor name\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options are the optional parameters associated with your monitor\",\n \"properties\": {\n \"enableLogsSample\": {\n \"description\": \"A Boolean indicating whether to send a log sample when the log monitor triggers.\",\n \"type\": \"boolean\"\n },\n \"escalationMessage\": {\n \"description\": \"A message to include with a re-notification.\",\n \"type\": \"string\"\n },\n \"evaluationDelay\": {\n \"description\": \"Time (in seconds) to delay evaluation, as a non-negative integer. For example, if the value is set to 300 (5min),\\nthe timeframe is set to last_5m and the time is 7:00, the monitor evaluates data from 6:50 to 6:55.\\nThis is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor always has data during evaluation.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"groupbySimpleMonitor\": {\n \"description\": \"A Boolean indicating whether the log alert monitor triggers a single alert or multiple alerts when any group breaches a threshold.\",\n \"type\": \"boolean\"\n },\n \"includeTags\": {\n \"description\": \"A Boolean indicating whether notifications from this monitor automatically inserts its triggering tags into the title.\",\n \"type\": \"boolean\"\n },\n \"locked\": {\n \"description\": \"DEPRECATED: Whether or not the monitor is locked (only editable by creator and admins). Use `restricted_roles` instead.\",\n \"type\": \"boolean\"\n },\n \"newGroupDelay\": {\n \"description\": \"Time (in seconds) to allow a host to boot and applications to fully start before starting the evaluation of\\nmonitor results. Should be a non negative integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"noDataTimeframe\": {\n \"description\": \"The number of minutes before a monitor notifies after data stops reporting. Datadog recommends at least 2x the\\nmonitor timeframe for metric alerts or 2 minutes for service checks. If omitted, 2x the evaluation timeframe\\nis used for metric alerts, and 24 hours is used for service checks.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"notificationPresetName\": {\n \"description\": \"An enum that toggles the display of additional content sent in the monitor notification.\",\n \"type\": \"string\"\n },\n \"notifyAudit\": {\n \"description\": \"A Boolean indicating whether tagged users are notified on changes to this monitor.\",\n \"type\": \"boolean\"\n },\n \"notifyBy\": {\n \"description\": \"A string indicating the granularity a monitor alerts on. Only available for monitors with groupings.\\nFor instance, a monitor grouped by cluster, namespace, and pod can be configured to only notify on each new\\ncluster violating the alert conditions by setting notify_by to [\\\"cluster\\\"]. Tags mentioned in notify_by must\\nbe a subset of the grouping tags in the query. For example, a query grouped by cluster and namespace cannot\\nnotify on region. Setting notify_by to [*] configures the monitor to notify as a simple-alert.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notifyNoData\": {\n \"description\": \"A Boolean indicating whether this monitor notifies when data stops reporting.\",\n \"type\": \"boolean\"\n },\n \"onMissingData\": {\n \"description\": \"An enum that controls how groups or monitors are treated if an evaluation does not return data points.\\nThe default option results in different behavior depending on the monitor query type.\\nFor monitors using Count queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions.\\nFor monitors using any query type other than Count, for example Gauge, Measure, or Rate, the monitor shows the last known status.\\nThis option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors\",\n \"type\": \"string\"\n },\n \"renotifyInterval\": {\n \"description\": \"The number of minutes after the last notification before a monitor re-notifies on the current status.\\nIt only re-notifies if it’s not resolved.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"renotifyOccurrences\": {\n \"description\": \"The number of times re-notification messages should be sent on the current status at the provided re-notification interval.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"renotifyStatuses\": {\n \"description\": \"The types of statuses for which re-notification messages should be sent. Valid values are alert, warn, no data.\",\n \"items\": {\n \"description\": \"MonitorRenotifyStatusType The different statuses for which renotification is supported.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"requireFullWindow\": {\n \"description\": \"A Boolean indicating whether this monitor needs a full window of data before it’s evaluated. We highly\\nrecommend you set this to false for sparse metrics, otherwise some evaluations are skipped. Default is false.\",\n \"type\": \"boolean\"\n },\n \"thresholdWindows\": {\n \"description\": \"A struct of the alerting time window options.\",\n \"properties\": {\n \"recoveryWindow\": {\n \"description\": \"Describes how long an anomalous metric must be normal before the alert recovers.\",\n \"type\": \"string\"\n },\n \"triggerWindow\": {\n \"description\": \"Describes how long a metric must be anomalous before an alert triggers.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"thresholds\": {\n \"description\": \"A struct of the different monitor threshold values.\",\n \"properties\": {\n \"critical\": {\n \"description\": \"The monitor CRITICAL threshold.\",\n \"type\": \"string\"\n },\n \"criticalRecovery\": {\n \"description\": \"The monitor CRITICAL recovery threshold.\",\n \"type\": \"string\"\n },\n \"ok\": {\n \"description\": \"The monitor OK threshold.\",\n \"type\": \"string\"\n },\n \"unknown\": {\n \"description\": \"The monitor UNKNOWN threshold.\",\n \"type\": \"string\"\n },\n \"warning\": {\n \"description\": \"The monitor WARNING threshold.\",\n \"type\": \"string\"\n },\n \"warningRecovery\": {\n \"description\": \"The monitor WARNING recovery threshold.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"timeoutH\": {\n \"description\": \"The number of hours of the monitor not reporting data before it automatically resolves from a triggered state.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"priority\": {\n \"description\": \"Priority is an integer from 1 (high) to 5 (low) indicating alert severity\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"query\": {\n \"description\": \"Query is the Datadog monitor query\",\n \"type\": \"string\"\n },\n \"restrictedRoles\": {\n \"description\": \"RestrictedRoles is a list of unique role identifiers to define which roles are allowed to edit the monitor.\\n`restricted_roles` is the successor of `locked`. For more information about `locked` and `restricted_roles`,\\nsee the [monitor options docs](https://docs.datadoghq.com/monitors/guide/monitor_api_options/#permissions-options).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"tags\": {\n \"description\": \"Tags is the monitor tags associated with your monitor\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"type\": {\n \"description\": \"Type is the monitor type\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Datadog Monitor\",\n \"type\": \"object\"\n}",
+ "version": "datadoghq.com/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Datadog Monitor",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogPodAutoscaler.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogPodAutoscaler.json
new file mode 100644
index 00000000000..f8c886098e5
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogPodAutoscaler.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "DatadogPodAutoscaler",
+ "schema": "{\n \"description\": \"DatadogPodAutoscaler is the Schema for the datadogpodautoscalers API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"DatadogPodAutoscalerSpec defines the desired state of DatadogPodAutoscaler\",\n \"properties\": {\n \"constraints\": {\n \"description\": \"Constraints defines constraints that should always be respected.\",\n \"properties\": {\n \"containers\": {\n \"description\": \"Containers defines constraints for the containers.\",\n \"items\": {\n \"description\": \"DatadogPodAutoscalerContainerConstraints defines constraints that should always be respected for a container.\\nIf no constraints are set, it enables resources scaling for all containers without any constraints.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Enabled false allows to disable resources autoscaling for the container. Default to true.\",\n \"type\": \"boolean\"\n },\n \"limits\": {\n \"description\": \"Limits defines the constraints for the limits of the container.\",\n \"properties\": {\n \"maxAllowed\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"MaxAllowed is the upper limit for the requests of the container.\",\n \"type\": \"object\"\n },\n \"minAllowed\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"MinAllowed is the lower limit for the requests of the container.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name is the name of the container. Can be \\\"*\\\" to apply to all containers.\",\n \"type\": \"string\"\n },\n \"requests\": {\n \"description\": \"Requests defines the constraints for the requests of the container.\",\n \"properties\": {\n \"maxAllowed\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"MaxAllowed is the upper limit for the requests of the container.\",\n \"type\": \"object\"\n },\n \"minAllowed\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"MinAllowed is the lower limit for the requests of the container.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"maxReplicas\": {\n \"description\": \"MaxReplicas is the upper limit for the number of POD replicas. Needs to be \\u003e= minReplicas.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minReplicas\": {\n \"description\": \"MinReplicas is the lower limit for the number of POD replicas. Needs to be \\u003e= 1. Default to 1.\",\n \"format\": \"int32\",\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"maxReplicas\"\n ],\n \"type\": \"object\"\n },\n \"owner\": {\n \"description\": \"Owner defines the source of truth for this object (local or remote)\\nValue needs to be set when a DatadogPodAutoscaler object is created.\",\n \"enum\": [\n \"Local\",\n \"Remote\"\n ],\n \"type\": \"string\"\n },\n \"policy\": {\n \"default\": {},\n \"description\": \"Policy defines how recommendations should be applied.\",\n \"properties\": {\n \"applyMode\": {\n \"default\": \"All\",\n \"description\": \"ApplyMode determines recommendations that should be applied by the controller:\\n- All: Apply all recommendations (regular and manual).\\n- Manual: Apply only manual recommendations (recommendations manually validated by user in the Datadog app).\\n- None: Prevent the controller to apply any recommendations.\\nIt's also possible to selectively deactivate upscale, downscale or update actions thanks to the `Upscale`, `Downscale` and `Update` fields.\",\n \"enum\": [\n \"All\",\n \"Manual\",\n \"None\"\n ],\n \"type\": \"string\"\n },\n \"downscale\": {\n \"description\": \"Downscale defines the policy to scale down the target resource.\",\n \"properties\": {\n \"rules\": {\n \"description\": \"Rules is a list of potential scaling polices which can be used during scaling.\\nAt least one policy must be specified, otherwise the DatadogPodAutoscalerScalingPolicy will be discarded as invalid\",\n \"items\": {\n \"description\": \"DatadogPodAutoscalerScalingRule define rules for horizontal that should be true for a certain amount of time.\",\n \"properties\": {\n \"match\": {\n \"description\": \"Match defines if the rule should be considered or not in the calculation.\\nDefault to Always if not set.\",\n \"enum\": [\n \"Always\",\n \"IfScalingEvent\"\n ],\n \"type\": \"string\"\n },\n \"periodSeconds\": {\n \"description\": \"PeriodSeconds specifies the window of time for which the policy should hold true.\\nPeriodSeconds must be greater than zero and less than or equal to 1800 (30 min).\",\n \"format\": \"int32\",\n \"maximum\": 1800,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"type\": {\n \"description\": \"Type is used to specify the scaling policy.\",\n \"enum\": [\n \"Pods\",\n \"Percent\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value contains the amount of change which is permitted by the policy.\\nSetting it to 0 will prevent any scaling in this direction and should not be used unless Match is set to IfScalingEvent.\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"periodSeconds\",\n \"type\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"strategy\": {\n \"description\": \"Strategy is used to specify which policy should be used.\\nIf not set, the default value Max is used.\",\n \"enum\": [\n \"Max\",\n \"Min\",\n \"Disabled\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"update\": {\n \"description\": \"Update defines the policy to update target resource.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Mode defines the mode of the update policy.\",\n \"enum\": [\n \"Auto\",\n \"Disabled\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"upscale\": {\n \"description\": \"Upscale defines the policy to scale up the target resource.\",\n \"properties\": {\n \"rules\": {\n \"description\": \"Rules is a list of potential scaling polices which can be used during scaling.\\nAt least one policy must be specified, otherwise the DatadogPodAutoscalerScalingPolicy will be discarded as invalid\",\n \"items\": {\n \"description\": \"DatadogPodAutoscalerScalingRule define rules for horizontal that should be true for a certain amount of time.\",\n \"properties\": {\n \"match\": {\n \"description\": \"Match defines if the rule should be considered or not in the calculation.\\nDefault to Always if not set.\",\n \"enum\": [\n \"Always\",\n \"IfScalingEvent\"\n ],\n \"type\": \"string\"\n },\n \"periodSeconds\": {\n \"description\": \"PeriodSeconds specifies the window of time for which the policy should hold true.\\nPeriodSeconds must be greater than zero and less than or equal to 1800 (30 min).\",\n \"format\": \"int32\",\n \"maximum\": 1800,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"type\": {\n \"description\": \"Type is used to specify the scaling policy.\",\n \"enum\": [\n \"Pods\",\n \"Percent\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value contains the amount of change which is permitted by the policy.\\nSetting it to 0 will prevent any scaling in this direction and should not be used unless Match is set to IfScalingEvent.\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"periodSeconds\",\n \"type\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"strategy\": {\n \"description\": \"Strategy is used to specify which policy should be used.\\nIf not set, the default value Max is used.\",\n \"enum\": [\n \"Max\",\n \"Min\",\n \"Disabled\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"remoteVersion\": {\n \"description\": \"RemoteVersion is the version of the .Spec currently store in this object.\\nOnly set if the owner is Remote.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targetRef\": {\n \"description\": \"TargetRef is the reference to the resource to scale.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"apiVersion is the API version of the referent\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"targets\": {\n \"description\": \"Targets are objectives to reach and maintain for the target resource.\\nDefault to a single target to maintain 80% POD CPU utilization.\",\n \"items\": {\n \"description\": \"DatadogPodAutoscalerTarget defines the objectives to reach and maintain for the target resource.\",\n \"properties\": {\n \"containerResource\": {\n \"description\": \"ContainerResource allows to set a container-level resource target.\",\n \"properties\": {\n \"container\": {\n \"description\": \"Container is the name of the container.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of the resource.\",\n \"enum\": [\n \"cpu\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value is the value of the target.\",\n \"properties\": {\n \"absolute\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Absolute defines the absolute value of the target (for instance 500 millicores).\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": {\n \"description\": \"Type specifies how the value is expressed (Absolute or Utilization).\",\n \"type\": \"string\"\n },\n \"utilization\": {\n \"description\": \"Utilization defines a percentage of the target compared to requested resource\",\n \"format\": \"int32\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"container\",\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"podResource\": {\n \"description\": \"PodResource allows to set a POD-level resource target.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the resource.\",\n \"enum\": [\n \"cpu\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value is the value of the target.\",\n \"properties\": {\n \"absolute\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Absolute defines the absolute value of the target (for instance 500 millicores).\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": {\n \"description\": \"Type specifies how the value is expressed (Absolute or Utilization).\",\n \"type\": \"string\"\n },\n \"utilization\": {\n \"description\": \"Utilization defines a percentage of the target compared to requested resource\",\n \"format\": \"int32\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type sets the type of the target.\",\n \"enum\": [\n \"PodResource\",\n \"ContainerResource\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"owner\",\n \"targetRef\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Datadog Pod Autoscaler\",\n \"type\": \"object\"\n}",
+ "version": "datadoghq.com/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Datadog Pod Autoscaler",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogSLO.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogSLO.json
new file mode 100644
index 00000000000..f769677ef7a
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/DatadogSLO.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "DatadogSLO",
+ "schema": "{\n \"description\": \"DatadogSLO allows a user to define and manage datadog SLOs from Kubernetes cluster.\",\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"controllerOptions\": {\n \"description\": \"ControllerOptions are the optional parameters in the DatadogSLO controller\",\n \"properties\": {\n \"disableRequiredTags\": {\n \"description\": \"DisableRequiredTags disables the automatic addition of required tags to SLOs.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": {\n \"description\": \"Description is a user-defined description of the service level objective.\\nAlways included in service level objective responses (but may be null). Optional in create/update requests.\",\n \"type\": \"string\"\n },\n \"groups\": {\n \"description\": \"Groups is a list of (up to 100) monitor groups that narrow the scope of a monitor service level objective.\\nIncluded in service level objective responses if it is not empty.\\nOptional in create/update requests for monitor service level objectives, but may only be used when the length of the monitor_ids field is one.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"monitorIDs\": {\n \"description\": \"MonitorIDs is a list of monitor IDs that defines the scope of a monitor service level objective. Required if type is monitor.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"name\": {\n \"description\": \"Name is the name of the service level objective.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query is the query for a metric-based SLO. Required if type is metric.\\nNote that only the `sum by` aggregator is allowed, which sums all request counts. `Average`, `max`, nor `min` request aggregators are not supported.\",\n \"properties\": {\n \"denominator\": {\n \"description\": \"Denominator is a Datadog metric query for total (valid) events.\",\n \"type\": \"string\"\n },\n \"numerator\": {\n \"description\": \"Numerator is a Datadog metric query for good events.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"denominator\",\n \"numerator\"\n ],\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags is a list of tags to associate with your service level objective.\\nThis can help you categorize and filter service level objectives in the service level objectives page of the UI.\\nNote: it's not currently possible to filter by these tags when querying via the API.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"targetThreshold\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"TargetThreshold is the target threshold such that when the service level indicator is above this threshold over the given timeframe, the objective is being met.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"timeframe\": {\n \"description\": \"The SLO time window options.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the service level objective.\",\n \"type\": \"string\"\n },\n \"warningThreshold\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"WarningThreshold is a optional warning threshold such that when the service level indicator is below this value for the given threshold, but above the target threshold, the objective appears in a \\\"warning\\\" state. This value must be greater than the target threshold.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"name\",\n \"targetThreshold\",\n \"timeframe\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Datadog SLO\",\n \"type\": \"object\"\n}",
+ "version": "datadoghq.com/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Datadog SLO",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/ExtendedDaemonSet.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/ExtendedDaemonSet.json
new file mode 100644
index 00000000000..285b61cac9a
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/ExtendedDaemonSet.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ExtendedDaemonSet",
+ "schema": "{\n \"description\": \"ExtendedDaemonSet is the Schema for the extendeddaemonsets API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ExtendedDaemonSetSpec defines the desired state of ExtendedDaemonSet\",\n \"properties\": {\n \"selector\": {\n \"description\": \"A label query over pods that are managed by the daemon set. Must match in order to be controlled. If empty, defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"strategy\": {\n \"description\": \"Daemonset deployment strategy.\",\n \"properties\": {\n \"canary\": {\n \"description\": \"Canary deployment configuration\",\n \"properties\": {\n \"autoFail\": {\n \"description\": \"ExtendedDaemonSetSpecStrategyCanaryAutoFail defines the canary deployment AutoFail parameters of the ExtendedDaemonSet.\",\n \"properties\": {\n \"canaryTimeout\": {\n \"description\": \"CanaryTimeout defines the maximum duration of a Canary, after which the Canary deployment is autofailed. This is a safeguard against lengthy Canary pauses. There is no default value.\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"Enabled enables AutoFail. Default value is true.\",\n \"type\": \"boolean\"\n },\n \"maxRestarts\": {\n \"description\": \"MaxRestarts defines the number of tolerable (per pod) Canary pod restarts after which the Canary deployment is autofailed. Default value is 5.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRestartsDuration\": {\n \"description\": \"MaxRestartsDuration defines the maximum duration of tolerable Canary pod restarts after which the Canary deployment is autofailed. There is no default value.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"autoPause\": {\n \"description\": \"ExtendedDaemonSetSpecStrategyCanaryAutoPause defines the canary deployment AutoPause parameters of the ExtendedDaemonSet.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Enabled enables AutoPause. Default value is true.\",\n \"type\": \"boolean\"\n },\n \"maxRestarts\": {\n \"description\": \"MaxRestarts defines the number of tolerable (per pod) Canary pod restarts after which the Canary deployment is autopaused. Default value is 2.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxSlowStartDuration\": {\n \"description\": \"MaxSlowStartDuration defines the maximum slow start duration for a pod (stuck in Creating state) after which the Canary deployment is autopaused. There is no default value.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"duration\": {\n \"type\": \"string\"\n },\n \"noRestartsDuration\": {\n \"description\": \"NoRestartsDuration defines min duration since last restart to end the canary phase.\",\n \"type\": \"string\"\n },\n \"nodeAntiAffinityKeys\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"nodeSelector\": {\n \"description\": \"A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"replicas\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"validationMode\": {\n \"description\": \"ValidationMode used to configure how a canary deployment is validated. Possible values are 'auto' (default) and 'manual'\",\n \"enum\": [\n \"auto\",\n \"manual\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"reconcileFrequency\": {\n \"description\": \"ReconcileFrequency use to configure how often the ExtendedDeamonset will be fully reconcile, default is 10sec.\",\n \"type\": \"string\"\n },\n \"rollingUpdate\": {\n \"description\": \"ExtendedDaemonSetSpecStrategyRollingUpdate defines the rolling update deployment strategy of ExtendedDaemonSet.\",\n \"properties\": {\n \"maxParallelPodCreation\": {\n \"description\": \"The maxium number of pods created in parallel. Default value is 250.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxPodSchedulerFailure\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"MaxPodSchedulerFailure the maxinum number of not scheduled on its Node due to a scheduler failure: resource constraints. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0. Default value is 1.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"slowStartAdditiveIncrease\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"SlowStartAdditiveIncrease Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Default value is 5.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"slowStartIntervalDuration\": {\n \"description\": \"SlowStartIntervalDuration the duration between to 2 Default value is 1min.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"template\": {\n \"description\": \"An object that describes the pod that will be created. The ExtendedDaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\",\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.\",\n \"type\": \"string\"\n },\n \"creationTimestamp\": {\n \"description\": \"CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"deletionGracePeriodSeconds\": {\n \"description\": \"Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"deletionTimestamp\": {\n \"description\": \"DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"type\": \"string\"\n },\n \"finalizers\": {\n \"description\": \"Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"generateName\": {\n \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\",\n \"type\": \"string\"\n },\n \"generation\": {\n \"description\": \"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\",\n \"type\": \"object\"\n },\n \"managedFields\": {\n \"description\": \"ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \\\"ci-cd\\\". The set of fields is always in the version that the workflow used when modifying the object.\",\n \"items\": {\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \\\"default\\\" namespace, but \\\"default\\\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces\",\n \"type\": \"string\"\n },\n \"ownerReferences\": {\n \"description\": \"List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\",\n \"items\": {\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resourceVersion\": {\n \"description\": \"An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"selfLink\": {\n \"description\": \"SelfLink is a URL representing this object. Populated by the system. Read-only.\\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \\\"this pod's namespace\\\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \\\"this pod's namespace\\\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \\\"this pod's namespace\\\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \\\"this pod's namespace\\\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \\\"0.0.0.0\\\" address inside a container will be accessible from the network. Cannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod. Defaults to \\\"ClusterFirst\\\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation. \\n To add an ephemeral container, use the ephemeralcontainers subresource of an existing Pod. Ephemeral containers may not be removed or restarted. \\n This is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec. \\n The container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace. Optional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace. Optional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \\\"0.0.0.0\\\" address inside a container will be accessible from the network. Cannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set. \\n If the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions \\n If the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup This is an alpha field and requires the IdentifyPodOS feature\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md This field is beta-level as of Kubernetes v1.18, and is only honored by servers that enable the PodOverhead feature.\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and \\\"system-cluster-critical\\\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \\\"True\\\" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class This is a beta feature as of Kubernetes v1.14.\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \\n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \\n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\". If not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches the triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number of pods into each bucket. It's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \\\"Unsatisfiable\\\" for an incoming pod if and only if every possible node assignment for that pod would violate \\\"MaxSkew\\\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"The Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"The URI the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"Share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"CephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"user\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"Optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeID\": {\n \"description\": \"volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"ConfigMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"csi\": {\n \"description\": \"CSI (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"Specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"DownwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"Ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"dataSourceRef\": {\n \"description\": \"Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"A label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"storageClassName\": {\n \"description\": \"Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"VolumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"Driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional: Extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"Commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"Target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"targetPortal\": {\n \"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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"PortworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"VolumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"Items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountToken\": {\n \"description\": \"information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"Path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"Quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"Group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"Volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"user\": {\n \"description\": \"The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Default is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"The host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"The name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sslEnabled\": {\n \"description\": \"Flag to enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"The ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"The name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"The name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeName\": {\n \"description\": \"VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"Storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"Path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"strategy\",\n \"template\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Extended Daemon Set\",\n \"type\": \"object\"\n}",
+ "version": "datadoghq.com/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Extended Daemon Set",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/ExtendedDaemonSetReplicaSet.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/ExtendedDaemonSetReplicaSet.json
new file mode 100644
index 00000000000..e01c2a2fdef
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/ExtendedDaemonSetReplicaSet.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ExtendedDaemonSetReplicaSet",
+ "schema": "{\n \"description\": \"ExtendedDaemonSetReplicaSet is the Schema for the extendeddaemonsetreplicasets API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ExtendedDaemonSetReplicaSetSpec defines the desired state of ExtendedDaemonSetReplicaSet\",\n \"properties\": {\n \"selector\": {\n \"description\": \"A label query over pods that are managed by the daemon set. Must match in order to be controlled. If empty, defaulted to labels on Pod template.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"template\": {\n \"description\": \"An object that describes the pod that will be created. The ExtendedDaemonSetReplicaSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified).\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations\",\n \"type\": \"object\"\n },\n \"clusterName\": {\n \"description\": \"The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.\",\n \"type\": \"string\"\n },\n \"creationTimestamp\": {\n \"description\": \"CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"deletionGracePeriodSeconds\": {\n \"description\": \"Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"deletionTimestamp\": {\n \"description\": \"DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"type\": \"string\"\n },\n \"finalizers\": {\n \"description\": \"Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"generateName\": {\n \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\",\n \"type\": \"string\"\n },\n \"generation\": {\n \"description\": \"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\",\n \"type\": \"object\"\n },\n \"managedFields\": {\n \"description\": \"ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \\\"ci-cd\\\". The set of fields is always in the version that the workflow used when modifying the object.\",\n \"items\": {\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \\\"default\\\" namespace, but \\\"default\\\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces\",\n \"type\": \"string\"\n },\n \"ownerReferences\": {\n \"description\": \"List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\",\n \"items\": {\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resourceVersion\": {\n \"description\": \"An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"selfLink\": {\n \"description\": \"SelfLink is a URL representing this object. Populated by the system. Read-only.\\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \\\"this pod's namespace\\\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \\\"this pod's namespace\\\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \\\"this pod's namespace\\\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \\u003ctopologyKey\\u003e matches that of any node on which a pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \\\"this pod's namespace\\\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\"\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \\\"0.0.0.0\\\" address inside a container will be accessible from the network. Cannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod. Defaults to \\\"ClusterFirst\\\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation. \\n To add an ephemeral container, use the ephemeralcontainers subresource of an existing Pod. Ephemeral containers may not be removed or restarted. \\n This is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec. \\n The container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace. Optional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace. Optional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"resourceFieldRef\": {\n \"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.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \\\"0.0.0.0\\\" address inside a container will be accessible from the network. Cannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 \\u003c x \\u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod \\u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must not contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set. \\n If the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions \\n If the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup This is an alpha field and requires the IdentifyPodOS feature\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md This field is beta-level as of Kubernetes v1.18, and is only honored by servers that enable the PodOverhead feature.\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is beta-level, gated by the NonPreemptingPriority feature-gate.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and \\\"system-cluster-critical\\\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \\\"True\\\" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class This is a beta feature as of Kubernetes v1.14.\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \\n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \\n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used. Note that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\". If not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches the triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number of pods into each bucket. It's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \\\"Unsatisfiable\\\" for an incoming pod if and only if every possible node assignment for that pod would violate \\\"MaxSkew\\\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"The Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"The URI the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"Share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"CephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"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\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"user\": {\n \"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\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"Optional: points to a secret object containing parameters used to connect to OpenStack.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeID\": {\n \"description\": \"volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"ConfigMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"csi\": {\n \"description\": \"CSI (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"Specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"DownwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"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\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"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\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"Ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where `\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\",\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"description\": \"This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"dataSourceRef\": {\n \"description\": \"Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"A label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"storageClassName\": {\n \"description\": \"Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"VolumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"description\": \"Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"Driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional: Extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker should be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"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\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"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.\",\n \"properties\": {\n \"directory\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"Repository URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"Commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"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\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"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.\",\n \"properties\": {\n \"path\": {\n \"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\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"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\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"Target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"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).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"description\": \"ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"targetPortal\": {\n \"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).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"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\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"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\",\n \"properties\": {\n \"path\": {\n \"description\": \"Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Will force the ReadOnly setting in VolumeMounts. Default false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"PortworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"VolumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"Items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"configMap\": {\n \"description\": \"information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountToken\": {\n \"description\": \"information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"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.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"Path is the path relative to the mount point of the file to project the token into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"Quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"Group to map volume access to Default is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"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\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User to map volume access to Defaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"Volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"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\",\n \"properties\": {\n \"fsType\": {\n \"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\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"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\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"description\": \"The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"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\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"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\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"user\": {\n \"description\": \"The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Default is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"The host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"The name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sslEnabled\": {\n \"description\": \"Flag to enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"The ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"The name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"The name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. 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.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"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 '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"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?\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeName\": {\n \"description\": \"VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"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.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"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.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"Storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"Path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"templateGeneration\": {\n \"description\": \"A sequence hash representing a specific generation of the template. Populated by the system. It can be set only during the creation.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"template\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Extended Daemon Set Replica Set\",\n \"type\": \"object\"\n}",
+ "version": "datadoghq.com/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Extended Daemon Set Replica Set",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/ExtendedDaemonsetSetting.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/ExtendedDaemonsetSetting.json
new file mode 100644
index 00000000000..9948ac49218
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/components/ExtendedDaemonsetSetting.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ExtendedDaemonsetSetting",
+ "schema": "{\n \"description\": \"ExtendedDaemonsetSetting is the Schema for the extendeddaemonsetsettings API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ExtendedDaemonsetSettingSpec is the Schema for the extendeddaemonsetsetting API\",\n \"properties\": {\n \"containers\": {\n \"description\": \"Containers contains a list of container spec override.\",\n \"items\": {\n \"description\": \"ExtendedDaemonsetSettingContainerSpec defines the resources override for a container identified by its name\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"ResourceRequirements describes the compute resource requirements.\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\",\n \"resources\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeSelector\": {\n \"description\": \"NodeSelector lists labels that must be present on nodes to trigger the usage of this resource.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"reference\": {\n \"description\": \"Reference contains enough information to let you identify the referred resource.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\\\"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"nodeSelector\",\n \"reference\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Extended Daemonset Setting\",\n \"type\": \"object\"\n}",
+ "version": "datadoghq.com/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Extended Daemonset Setting",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "source_uri": "git://github.com/DataDog/helm-charts/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "svgColor": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\n\tL670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\n\tc6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\n\tL0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\n\tc18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\n\ts-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\n\tc-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\n\tc6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\n\tc10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\n\tc-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\n\ts11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\n\tc-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\n\tc17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\n\tc11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\n\tc9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\n\tc32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\n\tc-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\n\tc-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\n\tc2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\n\tc2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\n\tc-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\n\tc-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\n\tc19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\n\tc-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\n\tc16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\n\tc-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\n\tc8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\n\tc-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\n\tc-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\n\tc18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\n\tc5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\n\tc5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\n\tC401.49,268.05,386.84,271.12,397.85,260.65\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\"\u003e\n\u003cstyle type=\"text/css\"\u003e\n\t.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\n\tc1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\n\tc-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\n\tc12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\n\tc-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\n\tc0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\n\tc-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\n\tc1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\n\tc-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\n\tc19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\n\tc6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\n\tc-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\n\tc1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\n\tc5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\n\tC519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\n\tc6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\n\tc2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\n\tc-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\n\ts12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\n\tc-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\n\tc2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\n\tc5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\n\tc15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\n\tc-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\n\tc4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\n\tc6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\n\tc47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\n\tc-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\n\tc15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\n\tL687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\n\tc-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"/\u003e\n\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/model.json b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/model.json
new file mode 100644
index 00000000000..4d853d2edb8
--- /dev/null
+++ b/server/meshmodel/datadog-operator/datadog-3.70.1/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Datadog Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#632CA6",
+ "secondaryColor": "#00D3A9",
+ "shape": "rectangle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.55 856.85\" style=\"enable-background:new 0 0 800.55 856.85;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#632CA6;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M670.38,608.27l-71.24-46.99l-59.43,99.27l-69.12-20.21l-60.86,92.89l3.12,29.24l330.9-60.97l-19.22-206.75\u0026#xA;\u0026#x9;L670.38,608.27z M361.79,519.13l53.09-7.3c8.59,3.86,14.57,5.33,24.87,7.95c16.04,4.18,34.61,8.19,62.11-5.67\u0026#xA;\u0026#x9;c6.4-3.17,19.73-15.36,25.12-22.31l217.52-39.46l22.19,268.56l-372.65,67.16L361.79,519.13z M765.85,422.36l-21.47,4.09L703.13,0.27\u0026#xA;\u0026#x9;L0.27,81.77l86.59,702.68l82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26c-24.23-20.13-15.66-54.32-1.37-75.91\u0026#xA;\u0026#x9;c18.91-36.48,116.34-82.84,110.82-141.15c-1.98-21.2-5.35-48.8-25.03-67.71c-0.74,7.85,0.59,15.41,0.59,15.41\u0026#xA;\u0026#x9;s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31c-3.03,8.33-2.63,17.99-2.63,17.99s-6.61-15.62-7.68-28.8\u0026#xA;\u0026#x9;c-3.92,5.9-4.91,17.11-4.91,17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49c21.45,15.03,68.67,11.46,87.07-15.66\u0026#xA;\u0026#x9;c6.11-8.98,10.29-33.5-3.05-81.81c-8.57-30.98-29.79-77.11-38.06-94.61l-0.99,0.71c4.36,14.1,13.35,43.66,16.8,57.99\u0026#xA;\u0026#x9;c10.44,43.47,13.24,58.6,8.34,78.64c-4.17,17.42-14.17,28.82-39.52,41.56c-25.35,12.78-58.99-18.32-61.12-20.04\u0026#xA;\u0026#x9;c-24.63-19.62-43.68-51.63-45.81-67.18c-2.21-17.02,9.81-27.24,15.87-41.16c-8.67,2.48-18.34,6.88-18.34,6.88\u0026#xA;\u0026#x9;s11.54-11.94,25.77-22.27c5.89-3.9,9.35-6.38,15.56-11.54c-8.99-0.15-16.29,0.11-16.29,0.11s14.99-8.1,30.53-14\u0026#xA;\u0026#x9;c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96,59.87-25.94c18.17-7.45,35.92-5.25,45.89,9.17c13.09,18.89,26.84,29.15,55.98,35.51\u0026#xA;\u0026#x9;c17.89-7.93,23.33-12.01,45.81-18.13c19.79-21.76,35.33-24.58,35.33-24.58s-7.71,7.07-9.77,18.18\u0026#xA;\u0026#x9;c11.22-8.84,23.52-16.22,23.52-16.22s-4.76,5.88-9.2,15.22l1.03,1.53c13.09-7.85,28.48-14.04,28.48-14.04s-4.4,5.56-9.56,12.76\u0026#xA;\u0026#x9;c9.87-0.08,29.89,0.42,37.66,1.3c45.87,1.01,55.39-48.99,72.99-55.26c22.04-7.87,31.89-12.63,69.45,24.26\u0026#xA;\u0026#x9;c32.23,31.67,57.41,88.36,44.91,101.06c-10.48,10.54-31.16-4.11-54.08-32.68c-12.11-15.13-21.27-33.01-25.56-55.74\u0026#xA;\u0026#x9;c-3.62-19.18-17.71-30.31-17.71-30.31S520,92.95,520,109.01c0,8.77,1.1,41.56,15.16,59.96c-1.39,2.69-2.04,13.31-3.58,15.34\u0026#xA;\u0026#x9;c-16.36-19.77-51.49-33.92-57.22-38.09c19.39,15.89,63.96,52.39,81.08,87.37c16.19,33.08,6.65,63.4,14.84,71.25\u0026#xA;\u0026#x9;c2.33,2.25,34.82,42.73,41.07,63.07c10.9,35.45,0.65,72.7-13.62,95.81l-39.85,6.21c-5.83-1.62-9.76-2.43-14.99-5.46\u0026#xA;\u0026#x9;c2.88-5.1,8.61-17.82,8.67-20.44l-2.25-3.95c-12.4,17.57-33.18,34.63-50.44,44.43c-22.59,12.8-48.63,10.83-65.58,5.58\u0026#xA;\u0026#x9;c-48.11-14.84-93.6-47.35-104.57-55.89c0,0-0.34,6.82,1.73,8.35c12.13,13.68,39.92,38.43,66.78,55.68l-57.26,6.3l27.07,210.78\u0026#xA;\u0026#x9;c-12,1.72-13.87,2.56-27.01,4.43c-11.58-40.91-33.73-67.62-57.94-83.18c-21.35-13.72-50.8-16.81-78.99-11.23l-1.81,2.1\u0026#xA;\u0026#x9;c19.6-2.04,42.74,0.8,66.51,15.85c23.33,14.75,42.13,52.85,49.05,75.79c8.86,29.32,14.99,60.68-8.86,93.92\u0026#xA;\u0026#x9;c-16.97,23.63-66.51,36.69-106.53,8.44c10.69,17.19,25.14,31.25,44.59,33.9c28.88,3.92,56.29-1.09,75.16-20.46\u0026#xA;\u0026#x9;c16.11-16.56,24.65-51.19,22.4-87.66l25.49-3.7l9.2,65.46l421.98-50.81L765.85,422.36z M509.12,244.59\u0026#xA;\u0026#x9;c-1.18,2.69-3.03,4.45-0.25,13.2l0.17,0.5l0.44,1.13l1.16,2.62c5.01,10.24,10.51,19.9,19.7,24.83c2.38-0.4,4.84-0.67,7.39-0.8\u0026#xA;\u0026#x9;c8.63-0.38,14.08,0.99,17.54,2.85c0.31-1.72,0.38-4.24,0.19-7.95c-0.67-12.97,2.57-35.03-22.36-46.64\u0026#xA;\u0026#x9;c-9.41-4.37-22.61-3.02-27.01,2.43c0.8,0.1,1.52,0.27,2.08,0.46C514.82,239.55,510.31,241.84,509.12,244.59 M578.99,365.61\u0026#xA;\u0026#x9;c-3.27-1.8-18.55-1.09-29.29,0.19c-20.46,2.41-42.55,9.51-47.39,13.29c-8.8,6.8-4.8,18.66,1.7,23.53\u0026#xA;\u0026#x9;c18.23,13.62,34.21,22.75,51.08,20.53c10.36-1.36,19.49-17.76,25.96-32.64C585.48,380.26,585.48,369.2,578.99,365.61 M397.85,260.65\u0026#xA;\u0026#x9;c5.77-5.48-28.74-12.68-55.52,5.58c-19.75,13.47-20.38,42.35-1.47,58.72c1.89,1.62,3.45,2.77,4.91,3.71\u0026#xA;\u0026#x9;c5.52-2.6,11.81-5.23,19.05-7.58c12.23-3.97,22.4-6.02,30.76-7.11c4-4.47,8.65-12.34,7.49-26.59\u0026#xA;\u0026#x9;C401.49,268.05,386.84,271.12,397.85,260.65\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" id=\"Layer_1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 800.5 907.77\" style=\"enable-background:new 0 0 800.5 907.77;\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\n\u003cstyle xmlns=\"http://www.w3.org/2000/svg\" type=\"text/css\"\u003e\n\u0026#x9;.st0{fill:#FFFFFF;}\n\u003c/style\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"st0\" d=\"M303.36,238.61c31.36-21.37,71.76-12.97,65-6.53c-12.89,12.28,4.26,8.65,6.11,31.31\u0026#xA;\u0026#x9;c1.36,16.69-4.09,25.88-8.78,31.11c-9.79,1.28-21.69,3.67-36.02,8.33c-8.48,2.76-15.85,5.82-22.31,8.9\u0026#xA;\u0026#x9;c-1.7-1.11-3.55-2.47-5.74-4.36C279.5,288.19,280.24,254.37,303.36,238.61 M490.68,370.72c5.69-4.41,31.55-12.72,55.49-15.55\u0026#xA;\u0026#x9;c12.57-1.48,30.49-2.34,34.31-0.2c7.59,4.19,7.59,17.16,2.39,29.14c-7.57,17.4-18.27,36.63-30.39,38.21\u0026#xA;\u0026#x9;c-19.77,2.61-38.46-8.09-59.8-24.03C485.06,392.56,480.38,378.68,490.68,370.72 M526.75,201.27c29.19,13.58,25.37,39.42,26.18,54.6\u0026#xA;\u0026#x9;c0.22,4.36,0.15,7.3-0.22,9.32c-4.04-2.19-10.43-3.8-20.56-3.35c-2.96,0.12-5.84,0.47-8.63,0.91c-10.77-5.77-17.21-17.06-23.1-29.06\u0026#xA;\u0026#x9;c-0.54-1.11-0.96-2.1-1.36-3.06c-0.17-0.44-0.35-0.91-0.52-1.31c-0.07-0.22-0.12-0.39-0.2-0.59c-3.23-10.25-1.06-12.3,0.3-15.46\u0026#xA;\u0026#x9;c1.41-3.23,6.68-5.89-1.11-8.58c-0.67-0.25-1.5-0.39-2.44-0.57C500.25,197.72,515.7,196.17,526.75,201.27 M367.62,510.22\u0026#xA;\u0026#x9;c-31.45-20.19-63.99-49.15-78.22-65.18c-2.39-1.8-2-9.79-2-9.79c12.84,9.98,66.11,48.04,122.44,65.42\u0026#xA;\u0026#x9;c19.87,6.14,50.36,8.46,76.81-6.53c20.21-11.46,44.54-31.43,59.06-52.01l2.66,4.61c-0.1,3.06-6.78,17.97-10.18,23.96\u0026#xA;\u0026#x9;c6.14,3.53,10.72,4.49,17.55,6.36l46.64-7.27c16.74-27.04,28.74-70.65,15.95-112.16c-7.3-23.81-45.36-71.22-48.09-73.83\u0026#xA;\u0026#x9;c-9.56-9.19,1.6-44.69-17.35-83.42C532.86,159.41,480.67,116.69,458,98.1c6.68,4.88,47.82,21.47,67,44.62\u0026#xA;\u0026#x9;c1.8-2.39,2.54-14.82,4.19-17.97c-16.47-21.57-17.75-59.95-17.75-70.21c0-18.81-9.56-40.13-9.56-40.13s16.47,13.04,20.73,35.5\u0026#xA;\u0026#x9;c5.03,26.6,15.75,47.55,29.93,65.28c26.84,33.43,51.08,50.58,63.33,38.23C630.53,138.58,601,72.2,563.28,35.15\u0026#xA;\u0026#x9;C519.25-8.09,507.74-2.52,481.91,6.7c-20.61,7.35-31.75,65.87-85.47,64.71c-9.1-1.06-32.54-1.63-44.13-1.53\u0026#xA;\u0026#x9;c6.04-8.43,11.22-14.94,11.22-14.94s-18.02,7.25-33.38,16.44l-1.18-1.77c5.18-10.92,10.75-17.82,10.75-17.82s-14.4,8.65-27.54,19.01\u0026#xA;\u0026#x9;c2.39-13.02,11.44-21.27,11.44-21.27s-18.19,3.28-41.36,28.77c-26.33,7.2-32.66,11.93-53.64,21.22\u0026#xA;\u0026#x9;c-34.12-7.44-50.21-19.45-65.55-41.56c-11.68-16.89-32.47-19.45-53.71-10.72c-30.97,12.8-70.14,30.33-70.14,30.33\u0026#xA;\u0026#x9;s12.77-0.52,26.08,0.05c-18.22,6.9-35.72,16.39-35.72,16.39s8.53-0.3,19.06-0.12c-7.27,6.04-11.29,8.92-18.22,13.51\u0026#xA;\u0026#x9;c-16.66,12.1-30.17,26.08-30.17,26.08s11.31-5.15,21.47-8.04c-7.1,16.27-21.18,28.25-18.59,48.17\u0026#xA;\u0026#x9;c2.49,18.19,24.82,55.66,53.64,78.66c2.49,2,41.86,38.43,71.56,23.47c29.68-14.94,41.39-28.25,46.27-48.66\u0026#xA;\u0026#x9;c5.74-23.44,2.47-41.17-9.79-92.05c-4.04-16.79-14.57-51.37-19.65-67.91l1.13-0.81c9.71,20.49,34.56,74.5,44.57,110.78\u0026#xA;\u0026#x9;c15.63,56.57,10.75,85.27,3.6,95.79c-21.57,31.73-76.84,35.92-101.98,18.34c-3.85,60.91,9.76,87.73,14.37,101.24\u0026#xA;\u0026#x9;c-2.29,15.53,7.77,44.37,7.77,44.37s1.13-13.11,5.74-20.02c1.23,15.41,9,33.72,9,33.72s-0.47-11.31,3.06-21.08\u0026#xA;\u0026#x9;c4.98,8.43,8.63,10.43,13.34,16.76c4.71,16.47,14.15,28.5,14.15,28.5s-1.53-8.83-0.69-18.02c23.05,22.14,27.02,54.45,29.31,79.28\u0026#xA;\u0026#x9;c6.46,68.26-107.63,122.54-129.74,165.24c-16.76,25.29-26.8,65.3,1.58,88.89c68.6,56.97,42.25,72.65,76.59,97.69\u0026#xA;\u0026#x9;c47.11,34.34,106.05,18.96,126.11-8.97c27.93-38.92,20.76-75.63,10.38-109.97c-8.11-26.85-30.15-71.46-57.41-88.72\u0026#xA;\u0026#x9;c-27.86-17.65-54.95-20.95-77.9-18.59l2.12-2.44c33.01-6.56,67.52-2.96,92.49,13.14c28.35,18.22,54.28,49.47,67.84,97.37\u0026#xA;\u0026#x9;c15.38-2.19,17.55-3.18,31.63-5.18l-31.7-246.76L367.62,510.22z M385.94,819.52l-3.65-34.22l71.29-108.74l80.93,23.64l69.59-116.23\u0026#xA;\u0026#x9;L687.52,639l63.38-132.92l22.53,242.07L385.94,819.52z M774.27,456.51l-254.72,46.17c-6.31,8.13-21.91,22.41-29.41,26.13\u0026#xA;\u0026#x9;c-32.17,16.2-53.91,11.51-72.7,6.63c-12.08-3.06-19.08-4.78-29.11-9.29l-62.17,8.53l37.74,314.87l436.35-78.66L774.27,456.51z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "datadog-3.70.1"
+ },
+ "name": "datadog-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Monitoring",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/devfile/v2.3.0/v1.0.0/components/DevWorkspace.json b/server/meshmodel/devfile/v2.3.0/v1.0.0/components/DevWorkspace.json
new file mode 100644
index 00000000000..ff30639ad2b
--- /dev/null
+++ b/server/meshmodel/devfile/v2.3.0/v1.0.0/components/DevWorkspace.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "DevWorkspace",
+ "schema": "{\n \"description\": \"DevWorkspace is the Schema for the devworkspaces API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"DevWorkspaceSpec defines the desired state of DevWorkspace\",\n \"properties\": {\n \"routingClass\": {\n \"type\": \"string\"\n },\n \"started\": {\n \"type\": \"boolean\"\n },\n \"template\": {\n \"description\": \"Structure of the workspace. This is also the specification of a workspace template.\",\n \"properties\": {\n \"commands\": {\n \"description\": \"Predefined, ready-to-use, workspace-related commands\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"exec\"\n ]\n },\n {\n \"required\": [\n \"apply\"\n ]\n },\n {\n \"required\": [\n \"vscodeTask\"\n ]\n },\n {\n \"required\": [\n \"vscodeLaunch\"\n ]\n },\n {\n \"required\": [\n \"composite\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"apply\": {\n \"description\": \"Command that consists in applying a given component definition, typically bound to a workspace event. \\n For example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the workspace POD, unless the component has its `dedicatedPod` field set to `true`. \\n When no `apply` command exist for a given component, it is assumed the component will be applied at workspace start by default.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"component\": {\n \"description\": \"Describes component that will be applied\",\n \"type\": \"string\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"commandType\": {\n \"description\": \"Type of workspace command\",\n \"enum\": [\n \"Exec\",\n \"Apply\",\n \"VscodeTask\",\n \"VscodeLaunch\",\n \"Composite\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"composite\": {\n \"description\": \"Composite command that allows executing several sub-commands either sequentially or concurrently\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commands\": {\n \"description\": \"The commands that comprise this composite command\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"parallel\": {\n \"description\": \"Indicates if the sub-commands should be executed concurrently\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandClass\": {\n \"description\": \"Class of command that the associated implementation component should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom command that the implementation component will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"commandClass\",\n \"embeddedResource\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"exec\": {\n \"description\": \"CLI Command executed in an existing component container\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandLine\": {\n \"description\": \"The actual command-line string \\n Special variables that can be used: \\n - `$PROJECTS_ROOT`: A path where projects sources are mounted \\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"Describes component to which given action relates\",\n \"type\": \"string\"\n },\n \"env\": {\n \"description\": \"Optional list of environment variables that have to be set before running the command\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"hotReloadCapable\": {\n \"description\": \"Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"workingDir\": {\n \"description\": \"Working directory where the command should be executed \\n Special variables that can be used: \\n - `${PROJECTS_ROOT}`: A path where projects sources are mounted \\n - `${PROJECT_SOURCE}`: A path to a project source (${PROJECTS_ROOT}/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeLaunch\": {\n \"description\": \"Command providing the definition of a VsCode launch action \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeTask\": {\n \"description\": \"Command providing the definition of a VsCode Task \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"components\": {\n \"description\": \"List of the workspace components, such as editor and plugins, user-provided containers, or other types of components\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"container\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n },\n {\n \"required\": [\n \"openshift\"\n ]\n },\n {\n \"required\": [\n \"volume\"\n ]\n },\n {\n \"required\": [\n \"plugin\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"componentType\": {\n \"description\": \"Type of component\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\",\n \"Plugin\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Allows adding and configuring workspace-related containers\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sourceMapping\": {\n \"description\": \"Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the value of the `PROJECTS_ROOT` environment variable is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom component whose logic is implementation-dependant and should be provided by the user possibly through some dedicated controller\",\n \"properties\": {\n \"componentClass\": {\n \"description\": \"Class of component that the associated implementation controller should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom component that the implementation controller will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"componentClass\",\n \"embeddedResource\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Allows importing into the workspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Allows importing into the workspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"plugin\": {\n \"description\": \"Allows importing a plugin. \\n Plugins are mainly imported devfiles that contribute components, commands and events as a consistent single unit. They are defined in either YAML files following the devfile syntax, or as `DevWorkspaceTemplate` Kubernetes Custom Resources\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n }\n ],\n \"properties\": {\n \"commands\": {\n \"description\": \"Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done using a strategic merge patch\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"exec\"\n ]\n },\n {\n \"required\": [\n \"apply\"\n ]\n },\n {\n \"required\": [\n \"vscodeTask\"\n ]\n },\n {\n \"required\": [\n \"vscodeLaunch\"\n ]\n },\n {\n \"required\": [\n \"composite\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"apply\": {\n \"description\": \"Command that consists in applying a given component definition, typically bound to a workspace event. \\n For example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the workspace POD, unless the component has its `dedicatedPod` field set to `true`. \\n When no `apply` command exist for a given component, it is assumed the component will be applied at workspace start by default.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"component\": {\n \"description\": \"Describes component that will be applied\",\n \"type\": \"string\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"commandType\": {\n \"description\": \"Type of workspace command\",\n \"enum\": [\n \"Exec\",\n \"Apply\",\n \"VscodeTask\",\n \"VscodeLaunch\",\n \"Composite\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"composite\": {\n \"description\": \"Composite command that allows executing several sub-commands either sequentially or concurrently\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commands\": {\n \"description\": \"The commands that comprise this composite command\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"parallel\": {\n \"description\": \"Indicates if the sub-commands should be executed concurrently\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandClass\": {\n \"description\": \"Class of command that the associated implementation component should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom command that the implementation component will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"commandClass\",\n \"embeddedResource\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"exec\": {\n \"description\": \"CLI Command executed in an existing component container\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandLine\": {\n \"description\": \"The actual command-line string \\n Special variables that can be used: \\n - `$PROJECTS_ROOT`: A path where projects sources are mounted \\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"Describes component to which given action relates\",\n \"type\": \"string\"\n },\n \"env\": {\n \"description\": \"Optional list of environment variables that have to be set before running the command\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"hotReloadCapable\": {\n \"description\": \"Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"workingDir\": {\n \"description\": \"Working directory where the command should be executed \\n Special variables that can be used: \\n - `${PROJECTS_ROOT}`: A path where projects sources are mounted \\n - `${PROJECT_SOURCE}`: A path to a project source (${PROJECTS_ROOT}/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeLaunch\": {\n \"description\": \"Command providing the definition of a VsCode launch action \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeTask\": {\n \"description\": \"Command providing the definition of a VsCode Task \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"components\": {\n \"description\": \"Overrides of components encapsulated in a plugin. Overriding is done using a strategic merge patch. A plugin cannot override embedded plugin components.\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"container\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n },\n {\n \"required\": [\n \"openshift\"\n ]\n },\n {\n \"required\": [\n \"volume\"\n ]\n }\n ],\n \"properties\": {\n \"componentType\": {\n \"description\": \"Type of component override for a plugin\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Configuration overriding for a Container component in a plugin\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sourceMapping\": {\n \"description\": \"Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the value of the `PROJECTS_ROOT` environment variable is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Configuration overriding for a Kubernetes component in a plugin\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Configuration overriding for an OpenShift component in a plugin\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Configuration overriding for a Volume component in a plugin\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults to false\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the Volume component in Container volume mounts or inside a parent\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"Id in a registry that contains a Devfile yaml file\",\n \"type\": \"string\"\n },\n \"importReferenceType\": {\n \"description\": \"type of location from where the referenced template structure should be retrieved\",\n \"enum\": [\n \"Uri\",\n \"Id\",\n \"Kubernetes\"\n ],\n \"type\": \"string\"\n },\n \"kubernetes\": {\n \"description\": \"Reference to a Kubernetes CRD of type DevWorkspaceTemplate\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Optional name that allows referencing the component in commands, or inside a parent If omitted it will be infered from the location (uri or registryEntry)\",\n \"type\": \"string\"\n },\n \"registryUrl\": {\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Uri of a Devfile yaml file\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Allows specifying the definition of a volume shared by several other components\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults to false\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the Volume component in Container volume mounts or inside a parent\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"events\": {\n \"description\": \"Bindings of commands to events. Each command is referred-to by its name.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"Names of commands that should be executed after the workspace is completely started. In the case of Che-Theia, these commands should be executed after all plugins and extensions have started, including project cloning. This means that those commands are not triggered until the user opens the IDE in his browser.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"postStop\": {\n \"description\": \"Names of commands that should be executed after stopping the workspace.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"preStart\": {\n \"description\": \"Names of commands that should be executed before the workspace start. Kubernetes-wise, these commands would typically be executed in init containers of the workspace POD.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"preStop\": {\n \"description\": \"Names of commands that should be executed before stopping the workspace.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"parent\": {\n \"description\": \"Parent workspace template\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n }\n ],\n \"properties\": {\n \"commands\": {\n \"description\": \"Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done using a strategic merge patch\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"exec\"\n ]\n },\n {\n \"required\": [\n \"apply\"\n ]\n },\n {\n \"required\": [\n \"vscodeTask\"\n ]\n },\n {\n \"required\": [\n \"vscodeLaunch\"\n ]\n },\n {\n \"required\": [\n \"composite\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"apply\": {\n \"description\": \"Command that consists in applying a given component definition, typically bound to a workspace event. \\n For example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the workspace POD, unless the component has its `dedicatedPod` field set to `true`. \\n When no `apply` command exist for a given component, it is assumed the component will be applied at workspace start by default.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"component\": {\n \"description\": \"Describes component that will be applied\",\n \"type\": \"string\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"commandType\": {\n \"description\": \"Type of workspace command\",\n \"enum\": [\n \"Exec\",\n \"Apply\",\n \"VscodeTask\",\n \"VscodeLaunch\",\n \"Composite\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"composite\": {\n \"description\": \"Composite command that allows executing several sub-commands either sequentially or concurrently\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commands\": {\n \"description\": \"The commands that comprise this composite command\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"parallel\": {\n \"description\": \"Indicates if the sub-commands should be executed concurrently\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandClass\": {\n \"description\": \"Class of command that the associated implementation component should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom command that the implementation component will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"commandClass\",\n \"embeddedResource\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"exec\": {\n \"description\": \"CLI Command executed in an existing component container\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandLine\": {\n \"description\": \"The actual command-line string \\n Special variables that can be used: \\n - `$PROJECTS_ROOT`: A path where projects sources are mounted \\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"Describes component to which given action relates\",\n \"type\": \"string\"\n },\n \"env\": {\n \"description\": \"Optional list of environment variables that have to be set before running the command\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"hotReloadCapable\": {\n \"description\": \"Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"workingDir\": {\n \"description\": \"Working directory where the command should be executed \\n Special variables that can be used: \\n - `${PROJECTS_ROOT}`: A path where projects sources are mounted \\n - `${PROJECT_SOURCE}`: A path to a project source (${PROJECTS_ROOT}/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeLaunch\": {\n \"description\": \"Command providing the definition of a VsCode launch action \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeTask\": {\n \"description\": \"Command providing the definition of a VsCode Task \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"components\": {\n \"description\": \"Overrides of components encapsulated in a parent devfile. Overriding is done using a strategic merge patch\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"container\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n },\n {\n \"required\": [\n \"openshift\"\n ]\n },\n {\n \"required\": [\n \"volume\"\n ]\n },\n {\n \"required\": [\n \"plugin\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"componentType\": {\n \"description\": \"Type of component\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\",\n \"Plugin\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Allows adding and configuring workspace-related containers\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sourceMapping\": {\n \"description\": \"Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the value of the `PROJECTS_ROOT` environment variable is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom component whose logic is implementation-dependant and should be provided by the user possibly through some dedicated controller\",\n \"properties\": {\n \"componentClass\": {\n \"description\": \"Class of component that the associated implementation controller should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom component that the implementation controller will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"componentClass\",\n \"embeddedResource\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Allows importing into the workspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Allows importing into the workspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"plugin\": {\n \"description\": \"Allows importing a plugin. \\n Plugins are mainly imported devfiles that contribute components, commands and events as a consistent single unit. They are defined in either YAML files following the devfile syntax, or as `DevWorkspaceTemplate` Kubernetes Custom Resources\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n }\n ],\n \"properties\": {\n \"commands\": {\n \"description\": \"Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done using a strategic merge patch\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"exec\"\n ]\n },\n {\n \"required\": [\n \"apply\"\n ]\n },\n {\n \"required\": [\n \"vscodeTask\"\n ]\n },\n {\n \"required\": [\n \"vscodeLaunch\"\n ]\n },\n {\n \"required\": [\n \"composite\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"apply\": {\n \"description\": \"Command that consists in applying a given component definition, typically bound to a workspace event. \\n For example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the workspace POD, unless the component has its `dedicatedPod` field set to `true`. \\n When no `apply` command exist for a given component, it is assumed the component will be applied at workspace start by default.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"component\": {\n \"description\": \"Describes component that will be applied\",\n \"type\": \"string\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"commandType\": {\n \"description\": \"Type of workspace command\",\n \"enum\": [\n \"Exec\",\n \"Apply\",\n \"VscodeTask\",\n \"VscodeLaunch\",\n \"Composite\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"composite\": {\n \"description\": \"Composite command that allows executing several sub-commands either sequentially or concurrently\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commands\": {\n \"description\": \"The commands that comprise this composite command\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"parallel\": {\n \"description\": \"Indicates if the sub-commands should be executed concurrently\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandClass\": {\n \"description\": \"Class of command that the associated implementation component should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom command that the implementation component will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"commandClass\",\n \"embeddedResource\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"exec\": {\n \"description\": \"CLI Command executed in an existing component container\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandLine\": {\n \"description\": \"The actual command-line string \\n Special variables that can be used: \\n - `$PROJECTS_ROOT`: A path where projects sources are mounted \\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"Describes component to which given action relates\",\n \"type\": \"string\"\n },\n \"env\": {\n \"description\": \"Optional list of environment variables that have to be set before running the command\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"hotReloadCapable\": {\n \"description\": \"Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"workingDir\": {\n \"description\": \"Working directory where the command should be executed \\n Special variables that can be used: \\n - `${PROJECTS_ROOT}`: A path where projects sources are mounted \\n - `${PROJECT_SOURCE}`: A path to a project source (${PROJECTS_ROOT}/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeLaunch\": {\n \"description\": \"Command providing the definition of a VsCode launch action \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeTask\": {\n \"description\": \"Command providing the definition of a VsCode Task \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"components\": {\n \"description\": \"Overrides of components encapsulated in a plugin. Overriding is done using a strategic merge patch. A plugin cannot override embedded plugin components.\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"container\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n },\n {\n \"required\": [\n \"openshift\"\n ]\n },\n {\n \"required\": [\n \"volume\"\n ]\n }\n ],\n \"properties\": {\n \"componentType\": {\n \"description\": \"Type of component override for a plugin\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Configuration overriding for a Container component in a plugin\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sourceMapping\": {\n \"description\": \"Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the value of the `PROJECTS_ROOT` environment variable is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Configuration overriding for a Kubernetes component in a plugin\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Configuration overriding for an OpenShift component in a plugin\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Configuration overriding for a Volume component in a plugin\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults to false\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the Volume component in Container volume mounts or inside a parent\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"Id in a registry that contains a Devfile yaml file\",\n \"type\": \"string\"\n },\n \"importReferenceType\": {\n \"description\": \"type of location from where the referenced template structure should be retrieved\",\n \"enum\": [\n \"Uri\",\n \"Id\",\n \"Kubernetes\"\n ],\n \"type\": \"string\"\n },\n \"kubernetes\": {\n \"description\": \"Reference to a Kubernetes CRD of type DevWorkspaceTemplate\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Optional name that allows referencing the component in commands, or inside a parent If omitted it will be infered from the location (uri or registryEntry)\",\n \"type\": \"string\"\n },\n \"registryUrl\": {\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Uri of a Devfile yaml file\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Allows specifying the definition of a volume shared by several other components\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults to false\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the Volume component in Container volume mounts or inside a parent\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"Id in a registry that contains a Devfile yaml file\",\n \"type\": \"string\"\n },\n \"importReferenceType\": {\n \"description\": \"type of location from where the referenced template structure should be retrieved\",\n \"enum\": [\n \"Uri\",\n \"Id\",\n \"Kubernetes\"\n ],\n \"type\": \"string\"\n },\n \"kubernetes\": {\n \"description\": \"Reference to a Kubernetes CRD of type DevWorkspaceTemplate\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"projects\": {\n \"description\": \"Overrides of projects encapsulated in a parent devfile. Overriding is done using a strategic merge patch.\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"git\"\n ]\n },\n {\n \"required\": [\n \"github\"\n ]\n },\n {\n \"required\": [\n \"zip\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"clonePath\": {\n \"description\": \"Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Project's Custom source\",\n \"properties\": {\n \"embeddedResource\": {\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"projectSourceClass\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"embeddedResource\",\n \"projectSourceClass\"\n ],\n \"type\": \"object\"\n },\n \"git\": {\n \"description\": \"Project's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"github\": {\n \"description\": \"Project's GitHub source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Project name\",\n \"type\": \"string\"\n },\n \"sourceType\": {\n \"description\": \"Type of project source\",\n \"enum\": [\n \"Git\",\n \"Github\",\n \"Zip\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"Project's Zip source\",\n \"properties\": {\n \"location\": {\n \"description\": \"Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH\",\n \"type\": \"string\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"registryUrl\": {\n \"type\": \"string\"\n },\n \"starterProjects\": {\n \"description\": \"Overrides of starter projects encapsulated in a parent devfile Overriding is done using a strategic merge patch.\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"git\"\n ]\n },\n {\n \"required\": [\n \"github\"\n ]\n },\n {\n \"required\": [\n \"zip\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"clonePath\": {\n \"description\": \"Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Project's Custom source\",\n \"properties\": {\n \"embeddedResource\": {\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"projectSourceClass\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"embeddedResource\",\n \"projectSourceClass\"\n ],\n \"type\": \"object\"\n },\n \"description\": {\n \"description\": \"Description of a starter project\",\n \"type\": \"string\"\n },\n \"git\": {\n \"description\": \"Project's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"github\": {\n \"description\": \"Project's GitHub source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Project name\",\n \"type\": \"string\"\n },\n \"sourceType\": {\n \"description\": \"Type of project source\",\n \"enum\": [\n \"Git\",\n \"Github\",\n \"Zip\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"Project's Zip source\",\n \"properties\": {\n \"location\": {\n \"description\": \"Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH\",\n \"type\": \"string\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"uri\": {\n \"description\": \"Uri of a Devfile yaml file\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"projects\": {\n \"description\": \"Projects worked on in the workspace, containing names and sources locations\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"git\"\n ]\n },\n {\n \"required\": [\n \"github\"\n ]\n },\n {\n \"required\": [\n \"zip\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"clonePath\": {\n \"description\": \"Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Project's Custom source\",\n \"properties\": {\n \"embeddedResource\": {\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"projectSourceClass\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"embeddedResource\",\n \"projectSourceClass\"\n ],\n \"type\": \"object\"\n },\n \"git\": {\n \"description\": \"Project's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"github\": {\n \"description\": \"Project's GitHub source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Project name\",\n \"type\": \"string\"\n },\n \"sourceType\": {\n \"description\": \"Type of project source\",\n \"enum\": [\n \"Git\",\n \"Github\",\n \"Zip\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"Project's Zip source\",\n \"properties\": {\n \"location\": {\n \"description\": \"Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH\",\n \"type\": \"string\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"starterProjects\": {\n \"description\": \"StarterProjects is a project that can be used as a starting point when bootstrapping new projects\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"git\"\n ]\n },\n {\n \"required\": [\n \"github\"\n ]\n },\n {\n \"required\": [\n \"zip\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"clonePath\": {\n \"description\": \"Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Project's Custom source\",\n \"properties\": {\n \"embeddedResource\": {\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"projectSourceClass\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"embeddedResource\",\n \"projectSourceClass\"\n ],\n \"type\": \"object\"\n },\n \"description\": {\n \"description\": \"Description of a starter project\",\n \"type\": \"string\"\n },\n \"git\": {\n \"description\": \"Project's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"github\": {\n \"description\": \"Project's GitHub source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Project name\",\n \"type\": \"string\"\n },\n \"sourceType\": {\n \"description\": \"Type of project source\",\n \"enum\": [\n \"Git\",\n \"Github\",\n \"Zip\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"Project's Zip source\",\n \"properties\": {\n \"location\": {\n \"description\": \"Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH\",\n \"type\": \"string\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"started\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Dev Workspace\",\n \"type\": \"object\"\n}",
+ "version": "workspace.devfile.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Dev Workspace",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/devfile/api/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "App Definition and Development"
+ },
+ "displayName": "Devfile",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#339cf2",
+ "secondaryColor": "#47a6f3",
+ "shape": "circle",
+ "source_uri": "git://github.com/devfile/api/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 705 717\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\" fill=\"#2F9AF2\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\" fill=\"#2F9AF2\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 705 717\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.3.0"
+ },
+ "name": "devfile",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Application Definition \u0026 Image Build",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#339cf2",
+ "secondaryColor": "#47a6f3",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"705\" height=\"717\" viewBox=\"0 0 705 717\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\"\n fill=\"#2F9AF2\" /\u003e\n \u003cpath\n d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\"\n fill=\"#2F9AF2\" /\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"705\" height=\"717\" viewBox=\"0 0 705 717\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/devfile/v2.3.0/v1.0.0/components/DevWorkspaceTemplate.json b/server/meshmodel/devfile/v2.3.0/v1.0.0/components/DevWorkspaceTemplate.json
new file mode 100644
index 00000000000..04381e4f201
--- /dev/null
+++ b/server/meshmodel/devfile/v2.3.0/v1.0.0/components/DevWorkspaceTemplate.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "DevWorkspaceTemplate",
+ "schema": "{\n \"description\": \"DevWorkspaceTemplate is the Schema for the devworkspacetemplates API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"Structure of the workspace. This is also the specification of a workspace template.\",\n \"properties\": {\n \"commands\": {\n \"description\": \"Predefined, ready-to-use, workspace-related commands\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"exec\"\n ]\n },\n {\n \"required\": [\n \"apply\"\n ]\n },\n {\n \"required\": [\n \"vscodeTask\"\n ]\n },\n {\n \"required\": [\n \"vscodeLaunch\"\n ]\n },\n {\n \"required\": [\n \"composite\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"apply\": {\n \"description\": \"Command that consists in applying a given component definition, typically bound to a workspace event. \\n For example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the workspace POD, unless the component has its `dedicatedPod` field set to `true`. \\n When no `apply` command exist for a given component, it is assumed the component will be applied at workspace start by default.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"component\": {\n \"description\": \"Describes component that will be applied\",\n \"type\": \"string\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"commandType\": {\n \"description\": \"Type of workspace command\",\n \"enum\": [\n \"Exec\",\n \"Apply\",\n \"VscodeTask\",\n \"VscodeLaunch\",\n \"Composite\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"composite\": {\n \"description\": \"Composite command that allows executing several sub-commands either sequentially or concurrently\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commands\": {\n \"description\": \"The commands that comprise this composite command\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"parallel\": {\n \"description\": \"Indicates if the sub-commands should be executed concurrently\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandClass\": {\n \"description\": \"Class of command that the associated implementation component should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom command that the implementation component will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"commandClass\",\n \"embeddedResource\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"exec\": {\n \"description\": \"CLI Command executed in an existing component container\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandLine\": {\n \"description\": \"The actual command-line string \\n Special variables that can be used: \\n - `$PROJECTS_ROOT`: A path where projects sources are mounted \\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"Describes component to which given action relates\",\n \"type\": \"string\"\n },\n \"env\": {\n \"description\": \"Optional list of environment variables that have to be set before running the command\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"hotReloadCapable\": {\n \"description\": \"Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"workingDir\": {\n \"description\": \"Working directory where the command should be executed \\n Special variables that can be used: \\n - `${PROJECTS_ROOT}`: A path where projects sources are mounted \\n - `${PROJECT_SOURCE}`: A path to a project source (${PROJECTS_ROOT}/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeLaunch\": {\n \"description\": \"Command providing the definition of a VsCode launch action \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeTask\": {\n \"description\": \"Command providing the definition of a VsCode Task \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"components\": {\n \"description\": \"List of the workspace components, such as editor and plugins, user-provided containers, or other types of components\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"container\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n },\n {\n \"required\": [\n \"openshift\"\n ]\n },\n {\n \"required\": [\n \"volume\"\n ]\n },\n {\n \"required\": [\n \"plugin\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"componentType\": {\n \"description\": \"Type of component\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\",\n \"Plugin\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Allows adding and configuring workspace-related containers\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sourceMapping\": {\n \"description\": \"Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the value of the `PROJECTS_ROOT` environment variable is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom component whose logic is implementation-dependant and should be provided by the user possibly through some dedicated controller\",\n \"properties\": {\n \"componentClass\": {\n \"description\": \"Class of component that the associated implementation controller should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom component that the implementation controller will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"componentClass\",\n \"embeddedResource\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Allows importing into the workspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Allows importing into the workspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"plugin\": {\n \"description\": \"Allows importing a plugin. \\n Plugins are mainly imported devfiles that contribute components, commands and events as a consistent single unit. They are defined in either YAML files following the devfile syntax, or as `DevWorkspaceTemplate` Kubernetes Custom Resources\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n }\n ],\n \"properties\": {\n \"commands\": {\n \"description\": \"Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done using a strategic merge patch\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"exec\"\n ]\n },\n {\n \"required\": [\n \"apply\"\n ]\n },\n {\n \"required\": [\n \"vscodeTask\"\n ]\n },\n {\n \"required\": [\n \"vscodeLaunch\"\n ]\n },\n {\n \"required\": [\n \"composite\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"apply\": {\n \"description\": \"Command that consists in applying a given component definition, typically bound to a workspace event. \\n For example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the workspace POD, unless the component has its `dedicatedPod` field set to `true`. \\n When no `apply` command exist for a given component, it is assumed the component will be applied at workspace start by default.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"component\": {\n \"description\": \"Describes component that will be applied\",\n \"type\": \"string\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"commandType\": {\n \"description\": \"Type of workspace command\",\n \"enum\": [\n \"Exec\",\n \"Apply\",\n \"VscodeTask\",\n \"VscodeLaunch\",\n \"Composite\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"composite\": {\n \"description\": \"Composite command that allows executing several sub-commands either sequentially or concurrently\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commands\": {\n \"description\": \"The commands that comprise this composite command\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"parallel\": {\n \"description\": \"Indicates if the sub-commands should be executed concurrently\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandClass\": {\n \"description\": \"Class of command that the associated implementation component should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom command that the implementation component will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"commandClass\",\n \"embeddedResource\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"exec\": {\n \"description\": \"CLI Command executed in an existing component container\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandLine\": {\n \"description\": \"The actual command-line string \\n Special variables that can be used: \\n - `$PROJECTS_ROOT`: A path where projects sources are mounted \\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"Describes component to which given action relates\",\n \"type\": \"string\"\n },\n \"env\": {\n \"description\": \"Optional list of environment variables that have to be set before running the command\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"hotReloadCapable\": {\n \"description\": \"Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"workingDir\": {\n \"description\": \"Working directory where the command should be executed \\n Special variables that can be used: \\n - `${PROJECTS_ROOT}`: A path where projects sources are mounted \\n - `${PROJECT_SOURCE}`: A path to a project source (${PROJECTS_ROOT}/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeLaunch\": {\n \"description\": \"Command providing the definition of a VsCode launch action \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeTask\": {\n \"description\": \"Command providing the definition of a VsCode Task \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"components\": {\n \"description\": \"Overrides of components encapsulated in a plugin. Overriding is done using a strategic merge patch. A plugin cannot override embedded plugin components.\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"container\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n },\n {\n \"required\": [\n \"openshift\"\n ]\n },\n {\n \"required\": [\n \"volume\"\n ]\n }\n ],\n \"properties\": {\n \"componentType\": {\n \"description\": \"Type of component override for a plugin\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Configuration overriding for a Container component in a plugin\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sourceMapping\": {\n \"description\": \"Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the value of the `PROJECTS_ROOT` environment variable is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Configuration overriding for a Kubernetes component in a plugin\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Configuration overriding for an OpenShift component in a plugin\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Configuration overriding for a Volume component in a plugin\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults to false\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the Volume component in Container volume mounts or inside a parent\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"Id in a registry that contains a Devfile yaml file\",\n \"type\": \"string\"\n },\n \"importReferenceType\": {\n \"description\": \"type of location from where the referenced template structure should be retrieved\",\n \"enum\": [\n \"Uri\",\n \"Id\",\n \"Kubernetes\"\n ],\n \"type\": \"string\"\n },\n \"kubernetes\": {\n \"description\": \"Reference to a Kubernetes CRD of type DevWorkspaceTemplate\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Optional name that allows referencing the component in commands, or inside a parent If omitted it will be infered from the location (uri or registryEntry)\",\n \"type\": \"string\"\n },\n \"registryUrl\": {\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Uri of a Devfile yaml file\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Allows specifying the definition of a volume shared by several other components\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults to false\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the Volume component in Container volume mounts or inside a parent\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"events\": {\n \"description\": \"Bindings of commands to events. Each command is referred-to by its name.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"Names of commands that should be executed after the workspace is completely started. In the case of Che-Theia, these commands should be executed after all plugins and extensions have started, including project cloning. This means that those commands are not triggered until the user opens the IDE in his browser.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"postStop\": {\n \"description\": \"Names of commands that should be executed after stopping the workspace.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"preStart\": {\n \"description\": \"Names of commands that should be executed before the workspace start. Kubernetes-wise, these commands would typically be executed in init containers of the workspace POD.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"preStop\": {\n \"description\": \"Names of commands that should be executed before stopping the workspace.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"parent\": {\n \"description\": \"Parent workspace template\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n }\n ],\n \"properties\": {\n \"commands\": {\n \"description\": \"Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done using a strategic merge patch\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"exec\"\n ]\n },\n {\n \"required\": [\n \"apply\"\n ]\n },\n {\n \"required\": [\n \"vscodeTask\"\n ]\n },\n {\n \"required\": [\n \"vscodeLaunch\"\n ]\n },\n {\n \"required\": [\n \"composite\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"apply\": {\n \"description\": \"Command that consists in applying a given component definition, typically bound to a workspace event. \\n For example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the workspace POD, unless the component has its `dedicatedPod` field set to `true`. \\n When no `apply` command exist for a given component, it is assumed the component will be applied at workspace start by default.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"component\": {\n \"description\": \"Describes component that will be applied\",\n \"type\": \"string\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"commandType\": {\n \"description\": \"Type of workspace command\",\n \"enum\": [\n \"Exec\",\n \"Apply\",\n \"VscodeTask\",\n \"VscodeLaunch\",\n \"Composite\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"composite\": {\n \"description\": \"Composite command that allows executing several sub-commands either sequentially or concurrently\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commands\": {\n \"description\": \"The commands that comprise this composite command\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"parallel\": {\n \"description\": \"Indicates if the sub-commands should be executed concurrently\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandClass\": {\n \"description\": \"Class of command that the associated implementation component should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom command that the implementation component will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"commandClass\",\n \"embeddedResource\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"exec\": {\n \"description\": \"CLI Command executed in an existing component container\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandLine\": {\n \"description\": \"The actual command-line string \\n Special variables that can be used: \\n - `$PROJECTS_ROOT`: A path where projects sources are mounted \\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"Describes component to which given action relates\",\n \"type\": \"string\"\n },\n \"env\": {\n \"description\": \"Optional list of environment variables that have to be set before running the command\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"hotReloadCapable\": {\n \"description\": \"Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"workingDir\": {\n \"description\": \"Working directory where the command should be executed \\n Special variables that can be used: \\n - `${PROJECTS_ROOT}`: A path where projects sources are mounted \\n - `${PROJECT_SOURCE}`: A path to a project source (${PROJECTS_ROOT}/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeLaunch\": {\n \"description\": \"Command providing the definition of a VsCode launch action \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeTask\": {\n \"description\": \"Command providing the definition of a VsCode Task \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"components\": {\n \"description\": \"Overrides of components encapsulated in a parent devfile. Overriding is done using a strategic merge patch\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"container\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n },\n {\n \"required\": [\n \"openshift\"\n ]\n },\n {\n \"required\": [\n \"volume\"\n ]\n },\n {\n \"required\": [\n \"plugin\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"componentType\": {\n \"description\": \"Type of component\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\",\n \"Plugin\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Allows adding and configuring workspace-related containers\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sourceMapping\": {\n \"description\": \"Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the value of the `PROJECTS_ROOT` environment variable is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom component whose logic is implementation-dependant and should be provided by the user possibly through some dedicated controller\",\n \"properties\": {\n \"componentClass\": {\n \"description\": \"Class of component that the associated implementation controller should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom component that the implementation controller will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"componentClass\",\n \"embeddedResource\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Allows importing into the workspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Allows importing into the workspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"plugin\": {\n \"description\": \"Allows importing a plugin. \\n Plugins are mainly imported devfiles that contribute components, commands and events as a consistent single unit. They are defined in either YAML files following the devfile syntax, or as `DevWorkspaceTemplate` Kubernetes Custom Resources\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"id\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n }\n ],\n \"properties\": {\n \"commands\": {\n \"description\": \"Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done using a strategic merge patch\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"exec\"\n ]\n },\n {\n \"required\": [\n \"apply\"\n ]\n },\n {\n \"required\": [\n \"vscodeTask\"\n ]\n },\n {\n \"required\": [\n \"vscodeLaunch\"\n ]\n },\n {\n \"required\": [\n \"composite\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"apply\": {\n \"description\": \"Command that consists in applying a given component definition, typically bound to a workspace event. \\n For example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the workspace POD, unless the component has its `dedicatedPod` field set to `true`. \\n When no `apply` command exist for a given component, it is assumed the component will be applied at workspace start by default.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"component\": {\n \"description\": \"Describes component that will be applied\",\n \"type\": \"string\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"commandType\": {\n \"description\": \"Type of workspace command\",\n \"enum\": [\n \"Exec\",\n \"Apply\",\n \"VscodeTask\",\n \"VscodeLaunch\",\n \"Composite\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"composite\": {\n \"description\": \"Composite command that allows executing several sub-commands either sequentially or concurrently\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commands\": {\n \"description\": \"The commands that comprise this composite command\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"parallel\": {\n \"description\": \"Indicates if the sub-commands should be executed concurrently\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"custom\": {\n \"description\": \"Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandClass\": {\n \"description\": \"Class of command that the associated implementation component should use to process this command with the appropriate logic\",\n \"type\": \"string\"\n },\n \"embeddedResource\": {\n \"description\": \"Additional free-form configuration for this custom command that the implementation component will know how to use\",\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"commandClass\",\n \"embeddedResource\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"exec\": {\n \"description\": \"CLI Command executed in an existing component container\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"commandLine\": {\n \"description\": \"The actual command-line string \\n Special variables that can be used: \\n - `$PROJECTS_ROOT`: A path where projects sources are mounted \\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n },\n \"component\": {\n \"description\": \"Describes component to which given action relates\",\n \"type\": \"string\"\n },\n \"env\": {\n \"description\": \"Optional list of environment variables that have to be set before running the command\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"hotReloadCapable\": {\n \"description\": \"Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Optional label that provides a label for this command to be used in Editor UI menus for example\",\n \"type\": \"string\"\n },\n \"workingDir\": {\n \"description\": \"Working directory where the command should be executed \\n Special variables that can be used: \\n - `${PROJECTS_ROOT}`: A path where projects sources are mounted \\n - `${PROJECT_SOURCE}`: A path to a project source (${PROJECTS_ROOT}/\\u003cproject-name\\u003e). If there are multiple projects, this will point to the directory of the first one.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeLaunch\": {\n \"description\": \"Command providing the definition of a VsCode launch action \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"vscodeTask\": {\n \"description\": \"Command providing the definition of a VsCode Task \\n Deprecated; removed in v1alpha2\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Optional map of free-form additional command attributes\",\n \"type\": \"object\"\n },\n \"group\": {\n \"description\": \"Defines the group this command is part of\",\n \"properties\": {\n \"isDefault\": {\n \"description\": \"Identifies the default command for a given group kind\",\n \"type\": \"boolean\"\n },\n \"kind\": {\n \"description\": \"Kind of group the command is part of\",\n \"enum\": [\n \"build\",\n \"run\",\n \"test\",\n \"debug\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.\",\n \"type\": \"string\"\n },\n \"inlined\": {\n \"description\": \"Inlined content of the VsCode configuration\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Vscode configuration command location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location as an absolute of relative URI the VsCode configuration will be fetched from\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"components\": {\n \"description\": \"Overrides of components encapsulated in a plugin. Overriding is done using a strategic merge patch. A plugin cannot override embedded plugin components.\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"container\"\n ]\n },\n {\n \"required\": [\n \"kubernetes\"\n ]\n },\n {\n \"required\": [\n \"openshift\"\n ]\n },\n {\n \"required\": [\n \"volume\"\n ]\n }\n ],\n \"properties\": {\n \"componentType\": {\n \"description\": \"Type of component override for a plugin\",\n \"enum\": [\n \"Container\",\n \"Kubernetes\",\n \"Openshift\",\n \"Volume\"\n ],\n \"type\": \"string\"\n },\n \"container\": {\n \"description\": \"Configuration overriding for a Container component in a plugin\",\n \"properties\": {\n \"args\": {\n \"description\": \"The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"command\": {\n \"description\": \"The command to run in the dockerimage component instead of the default one provided in the image. \\n Defaults to an empty array, meaning use whatever is defined in the image.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dedicatedPod\": {\n \"description\": \"Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod. \\n Default value is `false`\",\n \"type\": \"boolean\"\n },\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"Environment variables used in this container\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"memoryLimit\": {\n \"type\": \"string\"\n },\n \"mountSources\": {\n \"type\": \"boolean\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"sourceMapping\": {\n \"description\": \"Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the value of the `PROJECTS_ROOT` environment variable is used.\",\n \"type\": \"string\"\n },\n \"volumeMounts\": {\n \"description\": \"List of volumes mounts that should be mounted is this container.\",\n \"items\": {\n \"description\": \"Volume that should be mounted to a component container\",\n \"properties\": {\n \"name\": {\n \"description\": \"The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/\\u003cname\\u003e`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"kubernetes\": {\n \"description\": \"Configuration overriding for a Kubernetes component in a plugin\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"openshift\": {\n \"description\": \"Configuration overriding for an OpenShift component in a plugin\",\n \"oneOf\": [\n {\n \"required\": [\n \"uri\"\n ]\n },\n {\n \"required\": [\n \"inlined\"\n ]\n }\n ],\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Map of implementation-dependant string-based free-form attributes. \\n Examples of Che-specific attributes: \\n - cookiesAuthEnabled: \\\"true\\\" / \\\"false\\\", \\n - type: \\\"terminal\\\" / \\\"ide\\\" / \\\"ide-dev\\\",\",\n \"type\": \"object\"\n },\n \"exposure\": {\n \"description\": \"Describes how the endpoint should be exposed on the network. \\n - `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route. \\n - `internal` means that the endpoint will be exposed internally outside of the main workspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network. \\n - `none` means that the endpoint will not be exposed and will only be accessible inside the main workspace POD, on a local address. \\n Default value is `public`\",\n \"enum\": [\n \"public\",\n \"internal\",\n \"none\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the endpoint URL\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"description\": \"Describes the application and transport protocols of the traffic that will go through this endpoint. \\n - `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`. \\n - `https`: Endpoint will have `https` traffic, typically on a TCP connection. \\n - `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`. \\n - `wss`: Endpoint will have `wss` traffic, typically on a TCP connection. \\n - `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol. \\n - `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol. \\n Default value is `http`\",\n \"type\": \"string\"\n },\n \"secure\": {\n \"description\": \"Describes whether the endpoint should be secured and protected by some authentication process\",\n \"type\": \"boolean\"\n },\n \"targetPort\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inlined\": {\n \"description\": \"Inlined manifest\",\n \"type\": \"string\"\n },\n \"locationType\": {\n \"description\": \"Type of Kubernetes-like location\",\n \"enum\": [\n \"Uri\",\n \"Inlined\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the component in commands, or inside a parent\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Location in a file fetched from a uri.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Configuration overriding for a Volume component in a plugin\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults to false\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the Volume component in Container volume mounts or inside a parent\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"Id in a registry that contains a Devfile yaml file\",\n \"type\": \"string\"\n },\n \"importReferenceType\": {\n \"description\": \"type of location from where the referenced template structure should be retrieved\",\n \"enum\": [\n \"Uri\",\n \"Id\",\n \"Kubernetes\"\n ],\n \"type\": \"string\"\n },\n \"kubernetes\": {\n \"description\": \"Reference to a Kubernetes CRD of type DevWorkspaceTemplate\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Optional name that allows referencing the component in commands, or inside a parent If omitted it will be infered from the location (uri or registryEntry)\",\n \"type\": \"string\"\n },\n \"registryUrl\": {\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"Uri of a Devfile yaml file\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volume\": {\n \"description\": \"Allows specifying the definition of a volume shared by several other components\",\n \"properties\": {\n \"ephemeral\": {\n \"description\": \"Ephemeral volumes are not stored persistently across restarts. Defaults to false\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Mandatory name that allows referencing the Volume component in Container volume mounts or inside a parent\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"Size of the volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"Id in a registry that contains a Devfile yaml file\",\n \"type\": \"string\"\n },\n \"importReferenceType\": {\n \"description\": \"type of location from where the referenced template structure should be retrieved\",\n \"enum\": [\n \"Uri\",\n \"Id\",\n \"Kubernetes\"\n ],\n \"type\": \"string\"\n },\n \"kubernetes\": {\n \"description\": \"Reference to a Kubernetes CRD of type DevWorkspaceTemplate\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"projects\": {\n \"description\": \"Overrides of projects encapsulated in a parent devfile. Overriding is done using a strategic merge patch.\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"git\"\n ]\n },\n {\n \"required\": [\n \"github\"\n ]\n },\n {\n \"required\": [\n \"zip\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"clonePath\": {\n \"description\": \"Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Project's Custom source\",\n \"properties\": {\n \"embeddedResource\": {\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"projectSourceClass\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"embeddedResource\",\n \"projectSourceClass\"\n ],\n \"type\": \"object\"\n },\n \"git\": {\n \"description\": \"Project's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"github\": {\n \"description\": \"Project's GitHub source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Project name\",\n \"type\": \"string\"\n },\n \"sourceType\": {\n \"description\": \"Type of project source\",\n \"enum\": [\n \"Git\",\n \"Github\",\n \"Zip\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"Project's Zip source\",\n \"properties\": {\n \"location\": {\n \"description\": \"Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH\",\n \"type\": \"string\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"registryUrl\": {\n \"type\": \"string\"\n },\n \"starterProjects\": {\n \"description\": \"Overrides of starter projects encapsulated in a parent devfile Overriding is done using a strategic merge patch.\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"git\"\n ]\n },\n {\n \"required\": [\n \"github\"\n ]\n },\n {\n \"required\": [\n \"zip\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"clonePath\": {\n \"description\": \"Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Project's Custom source\",\n \"properties\": {\n \"embeddedResource\": {\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"projectSourceClass\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"embeddedResource\",\n \"projectSourceClass\"\n ],\n \"type\": \"object\"\n },\n \"description\": {\n \"description\": \"Description of a starter project\",\n \"type\": \"string\"\n },\n \"git\": {\n \"description\": \"Project's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"github\": {\n \"description\": \"Project's GitHub source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Project name\",\n \"type\": \"string\"\n },\n \"sourceType\": {\n \"description\": \"Type of project source\",\n \"enum\": [\n \"Git\",\n \"Github\",\n \"Zip\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"Project's Zip source\",\n \"properties\": {\n \"location\": {\n \"description\": \"Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH\",\n \"type\": \"string\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"uri\": {\n \"description\": \"Uri of a Devfile yaml file\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"projects\": {\n \"description\": \"Projects worked on in the workspace, containing names and sources locations\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"git\"\n ]\n },\n {\n \"required\": [\n \"github\"\n ]\n },\n {\n \"required\": [\n \"zip\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"clonePath\": {\n \"description\": \"Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Project's Custom source\",\n \"properties\": {\n \"embeddedResource\": {\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"projectSourceClass\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"embeddedResource\",\n \"projectSourceClass\"\n ],\n \"type\": \"object\"\n },\n \"git\": {\n \"description\": \"Project's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"github\": {\n \"description\": \"Project's GitHub source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Project name\",\n \"type\": \"string\"\n },\n \"sourceType\": {\n \"description\": \"Type of project source\",\n \"enum\": [\n \"Git\",\n \"Github\",\n \"Zip\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"Project's Zip source\",\n \"properties\": {\n \"location\": {\n \"description\": \"Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH\",\n \"type\": \"string\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"starterProjects\": {\n \"description\": \"StarterProjects is a project that can be used as a starting point when bootstrapping new projects\",\n \"items\": {\n \"oneOf\": [\n {\n \"required\": [\n \"git\"\n ]\n },\n {\n \"required\": [\n \"github\"\n ]\n },\n {\n \"required\": [\n \"zip\"\n ]\n },\n {\n \"required\": [\n \"custom\"\n ]\n }\n ],\n \"properties\": {\n \"clonePath\": {\n \"description\": \"Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Project's Custom source\",\n \"properties\": {\n \"embeddedResource\": {\n \"format\": \"textarea\",\n \"type\": \"string\",\n \"x-kubernetes-embedded-resource\": true\n },\n \"projectSourceClass\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"embeddedResource\",\n \"projectSourceClass\"\n ],\n \"type\": \"object\"\n },\n \"description\": {\n \"description\": \"Description of a starter project\",\n \"type\": \"string\"\n },\n \"git\": {\n \"description\": \"Project's Git source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"github\": {\n \"description\": \"Project's GitHub source\",\n \"properties\": {\n \"checkoutFrom\": {\n \"description\": \"Defines from what the project should be checked out. Required if there are more than one remote configured\",\n \"properties\": {\n \"remote\": {\n \"description\": \"The remote name should be used as init. Required if there are more than one remote configured\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"remotes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The remotes map which should be initialized in the git project. Must have at least one remote configured\",\n \"type\": \"object\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Project name\",\n \"type\": \"string\"\n },\n \"sourceType\": {\n \"description\": \"Type of project source\",\n \"enum\": [\n \"Git\",\n \"Github\",\n \"Zip\",\n \"Custom\"\n ],\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"Project's Zip source\",\n \"properties\": {\n \"location\": {\n \"description\": \"Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH\",\n \"type\": \"string\"\n },\n \"sparseCheckoutDir\": {\n \"description\": \"Part of project to populate in the working directory.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Dev Workspace Template\",\n \"type\": \"object\"\n}",
+ "version": "workspace.devfile.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Dev Workspace Template",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/devfile/api/main/crds"
+ },
+ "model": {
+ "category": {
+ "name": "App Definition and Development"
+ },
+ "displayName": "Devfile",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#339cf2",
+ "secondaryColor": "#47a6f3",
+ "shape": "circle",
+ "source_uri": "git://github.com/devfile/api/main/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 705 717\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\" fill=\"#2F9AF2\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\" fill=\"#2F9AF2\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 705 717\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.3.0"
+ },
+ "name": "devfile",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Application Definition \u0026 Image Build",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#339cf2",
+ "secondaryColor": "#47a6f3",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"705\" height=\"717\" viewBox=\"0 0 705 717\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\"\n fill=\"#2F9AF2\" /\u003e\n \u003cpath\n d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\"\n fill=\"#2F9AF2\" /\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"705\" height=\"717\" viewBox=\"0 0 705 717\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/devfile/v2.3.0/v1.0.0/model.json b/server/meshmodel/devfile/v2.3.0/v1.0.0/model.json
new file mode 100644
index 00000000000..954ab6440c0
--- /dev/null
+++ b/server/meshmodel/devfile/v2.3.0/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "App Definition and Development"
+ },
+ "displayName": "Devfile",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#339cf2",
+ "secondaryColor": "#47a6f3",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 705 717\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\" fill=\"#2F9AF2\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\" fill=\"#2F9AF2\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 705 717\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M533 321.024C532.988 297.057 527.105 273.399 515.787 251.808C504.47 230.218 488.009 211.249 467.628 196.31C465.669 205.344 460.841 213.641 453.754 220.151L440.21 232.606C462.714 250.118 477.82 274.337 482.895 301.042C487.97 327.747 482.691 355.243 467.979 378.735C453.267 402.227 430.055 420.225 402.39 429.591C374.726 438.957 344.365 439.097 316.6 429.986C288.835 420.875 265.429 403.091 250.462 379.735C235.495 356.38 229.917 328.934 234.701 302.184C239.485 275.434 254.327 251.076 276.639 233.359C298.951 215.641 327.318 205.687 356.794 205.233L316.359 242.417C311.859 246.556 309.33 252.169 309.33 258.021C309.33 263.874 311.859 269.487 316.359 273.626C320.859 277.764 326.963 280.089 333.328 280.089C339.692 280.089 345.796 277.764 350.296 273.626L412.683 216.235L431.078 199.318C434.375 196.259 436.323 192.186 436.546 187.884C436.769 183.582 435.251 179.356 432.286 176.023C431.737 175.801 428.686 172.611 427.39 171.42L350.23 100.464C345.73 96.325 339.626 94 333.262 94C326.897 94 320.793 96.325 316.293 100.464C311.793 104.602 309.264 110.215 309.264 116.068C309.264 121.921 311.793 127.534 316.293 131.672L348.54 161.327C314.636 163.199 282.07 174.157 254.858 192.848C227.647 211.54 206.98 237.148 195.408 266.514C183.836 295.879 181.865 327.718 189.738 358.101C197.61 388.485 214.983 416.084 239.711 437.496C264.44 458.907 295.443 473.193 328.897 478.592C362.351 483.991 396.791 480.266 427.97 467.877C459.149 455.488 485.702 434.977 504.354 408.874C523.006 382.771 532.942 352.218 532.934 320.984L533 321.024Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M705 325.243C705 145.893 546.859 0 352.5 0C158.141 0 0 145.974 0 325.243C0 503.035 155.399 647.875 347.455 650.385L316.195 679.228C311.698 683.377 309.171 689.005 309.171 694.873C309.171 700.742 311.698 706.37 316.195 710.519C320.692 714.669 326.792 717 333.152 717C339.512 717 345.612 714.669 350.109 710.519L422.061 644.11H422.193L430.968 636.014C434.509 632.736 436.498 628.296 436.498 623.668C436.498 619.039 434.509 614.599 430.968 611.321L418.244 599.582H418.113L350.109 536.836C345.612 532.687 339.512 530.356 333.152 530.356C326.792 530.356 320.692 532.687 316.195 536.836C311.698 540.986 309.171 546.614 309.171 552.482C309.171 558.351 311.698 563.978 316.195 568.128L357.282 606.038C355.681 606.038 354.101 606.16 352.5 606.16C184.553 606.16 47.9535 480.082 47.9535 325.142C47.9535 170.202 184.553 44.2455 352.5 44.2455C520.447 44.2455 657.047 170.262 657.047 325.243C657.047 447.576 571.845 551.834 453.321 590.392L453.518 590.554C459.407 596.004 463.757 602.702 466.189 610.063C468.622 617.424 469.061 625.222 467.47 632.776C605.561 588.611 705 467.452 705 325.243Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.3.0"
+ },
+ "name": "devfile",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Application Definition \u0026 Image Build",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/dragonfly/v1.1.7/v1.0.0/components/Dragonfly.json b/server/meshmodel/dragonfly/v1.1.7/v1.0.0/components/Dragonfly.json
new file mode 100644
index 00000000000..bff52b57e38
--- /dev/null
+++ b/server/meshmodel/dragonfly/v1.1.7/v1.0.0/components/Dragonfly.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Dragonfly",
+ "schema": "{\n \"description\": \"Dragonfly is the Schema for the dragonflies API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"DragonflySpec defines the desired state of Dragonfly\",\n \"properties\": {\n \"aclFromSecret\": {\n \"description\": \"(Optional) Acl file Secret to pass to the container\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"affinity\": {\n \"description\": \"(Optional) Dragonfly pod affinity\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"(Optional) Annotations to add to the Dragonfly pods.\",\n \"type\": \"object\"\n },\n \"args\": {\n \"description\": \"(Optional) Dragonfly container args to pass to the container\\nRefer to the Dragonfly documentation for the list of supported args\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"authentication\": {\n \"description\": \"(Optional) Dragonfly Authentication mechanism\",\n \"properties\": {\n \"clientCaCertSecret\": {\n \"description\": \"(Optional) If specified, the Dragonfly instance will check if the\\nclient certificate is signed by this CA. Server TLS must be enabled for this.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"passwordFromSecret\": {\n \"description\": \"(Optional) Dragonfly Password from Secret as a reference to a specific key\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"env\": {\n \"description\": \"(Optional) Env variables to add to the Dragonfly pods.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Image is the Dragonfly image to use\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"(Optional) Labels to add to the Dragonfly pods.\",\n \"type\": \"object\"\n },\n \"memcachedPort\": {\n \"description\": \"(Optional) Dragonfly memcached port\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"(Optional) Dragonfly pod node selector\",\n \"type\": \"object\"\n },\n \"priorityClassName\": {\n \"description\": \"(Optional) Dragonfly pod priority class name\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"description\": \"Replicas is the total number of Dragonfly instances including the master\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"description\": \"(Optional) Dragonfly container resource limits. Any container limits\\ncan be specified.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccountName\": {\n \"description\": \"(Optional) Dragonfly pod service account name\",\n \"type\": \"string\"\n },\n \"serviceSpec\": {\n \"description\": \"(Optional) Dragonfly Service configuration\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"(Optional) Dragonfly Service Annotations\",\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"(Optional) Dragonfly Service Labels\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"(Optional) Dragonfly Service name\",\n \"type\": \"string\"\n },\n \"nodePort\": {\n \"description\": \"(Optional) Dragonfly Service nodePort\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"description\": \"(Optional) Dragonfly Service type\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"skipFSGroup\": {\n \"description\": \"(Optional) Skip Assigning FileSystem Group. Required for platforms such as Openshift that require IDs to not be set, as it injects a fixed randomized ID per namespace into all pods.\",\n \"type\": \"boolean\"\n },\n \"snapshot\": {\n \"description\": \"(Optional) Dragonfly Snapshot configuration\",\n \"properties\": {\n \"cron\": {\n \"description\": \"(Optional) Dragonfly snapshot schedule\",\n \"type\": \"string\"\n },\n \"dir\": {\n \"description\": \"(Optional) The path to the snapshot directory\\nThis can also be an S3 URI with the prefix `s3://` when\\nusing S3 as the snapshot backend\",\n \"type\": \"string\"\n },\n \"persistentVolumeClaimSpec\": {\n \"description\": \"(Optional) Dragonfly PVC spec\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tlsSecretRef\": {\n \"description\": \"(Optional) Dragonfly TLS secret to used for TLS\\nConnections to Dragonfly. Dragonfly instance must\\nhave access to this secret and be in the same namespace\",\n \"properties\": {\n \"name\": {\n \"description\": \"name is unique within a namespace to reference a secret resource.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace defines the space within which the secret name must be unique.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"tolerations\": {\n \"description\": \"(Optional) Dragonfly pod tolerations\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"(Optional) Dragonfly pod topologySpreadConstraints\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Dragonfly\",\n \"type\": \"object\"\n}",
+ "version": "dragonflydb.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Dragonfly",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/dragonflydb/dragonfly-operator/main/manifests"
+ },
+ "model": {
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Dragonfly",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#4aba58",
+ "secondaryColor": "#8FFF9D",
+ "shape": "circle",
+ "source_uri": "git://github.com/dragonflydb/dragonfly-operator/main/manifests",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"0.92 -5.08 357.16 368.16\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"linear-gradient\" x1=\"8.049\" x2=\"223.705\" y1=\"185.068\" y2=\"185.068\" gradientTransform=\"matrix(1 0 0 -1 0 362)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#006934\" stop-opacity=\"0\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#006934\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#4aba58}\u003c/style\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"_编组_\" data-name=\"编组\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"_编组_2\" data-name=\"编组 2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_\" d=\"M228.765 30.362L179.644 2l-49.093 28.362 49.093 28.335 49.121-28.335z\" class=\"cls-1\" data-name=\"路径\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_2\" d=\"M152.896 215.413l7.001 129.366 19.747 11.405 19.774-11.405 7.002-129.366-26.776-15.453-26.748 15.453z\" class=\"cls-1\" data-name=\"路径 2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_3\" d=\"M265.496 108.474L351.24 58.97l-35.91-20.758a27.35 27.35 0 0 0-13.676-3.802 25.819 25.819 0 0 0-13.183 3.555l-72.532 41.9z\" class=\"cls-1\" data-name=\"路径 3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_4\" d=\"M265.414 150.43l85.743 49.503-35.938 20.759a27.35 27.35 0 0 1-13.675 3.802 25.818 25.818 0 0 1-13.183-3.556l-72.505-41.873z\" class=\"cls-1\" data-name=\"路径 4\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_5\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556L179.7 157.978z\" class=\"cls-1\" data-name=\"路径 5\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_6\" d=\"M179.644 158.033L8.049 58.97l35.91-20.758a27.35 27.35 0 0 1 13.676-3.802 25.819 25.819 0 0 1 13.183 3.555l158.412 91.46z\" class=\"cls-1\" data-name=\"路径 6\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_7\" fill=\"url(#linear-gradient)\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556l78.769-45.51a19.774 19.774 0 0 0 .793-34.243 1040.537 1040.537 0 0 1-20.321-11.706z\" data-name=\"路径 7\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"0.92 -5.08 357.16 368.16\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff}\u003c/style\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"_编组_\" data-name=\"编组\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"_编组_2\" data-name=\"编组 2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_\" d=\"M228.765 30.362L179.644 2l-49.093 28.362 49.093 28.335 49.121-28.335z\" class=\"cls-1\" data-name=\"路径\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_2\" d=\"M152.896 215.413l7.001 129.366 19.747 11.405 19.774-11.405 7.002-129.366-26.776-15.453-26.748 15.453z\" class=\"cls-1\" data-name=\"路径 2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_3\" d=\"M265.496 108.474L351.24 58.97l-35.91-20.758a27.35 27.35 0 0 0-13.676-3.802 25.819 25.819 0 0 0-13.183 3.555l-72.532 41.9z\" class=\"cls-1\" data-name=\"路径 3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_4\" d=\"M265.414 150.43l85.743 49.503-35.938 20.759a27.35 27.35 0 0 1-13.675 3.802 25.818 25.818 0 0 1-13.183-3.556l-72.505-41.873z\" class=\"cls-1\" data-name=\"路径 4\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_5\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556L179.7 157.978z\" class=\"cls-1\" data-name=\"路径 5\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_6\" d=\"M179.644 158.033L8.049 58.97l35.91-20.758a27.35 27.35 0 0 1 13.676-3.802 25.819 25.819 0 0 1 13.183 3.555l158.412 91.46z\" class=\"cls-1\" data-name=\"路径 6\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_7\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556l78.769-45.51a19.774 19.774 0 0 0 .793-34.243 1040.537 1040.537 0 0 1-20.321-11.706z\" class=\"cls-1\" data-name=\"路径 7\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.1.7"
+ },
+ "name": "dragonfly",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Container Registry",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#4aba58",
+ "secondaryColor": "#8FFF9D",
+ "shape": "circle",
+ "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"0.92 -5.08 357.16 368.16\"\u003e\u003cdefs\u003e\u003clinearGradient id=\"linear-gradient\" x1=\"8.049\" x2=\"223.705\" y1=\"185.068\" y2=\"185.068\" gradientTransform=\"matrix(1 0 0 -1 0 362)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop offset=\"0\" stop-color=\"#006934\" stop-opacity=\"0\"/\u003e\u003cstop offset=\"1\" stop-color=\"#006934\"/\u003e\u003c/linearGradient\u003e\u003cstyle\u003e.cls-1{fill:#4aba58}\u003c/style\u003e\u003c/defs\u003e\u003cg id=\"_编组_\" data-name=\"编组\"\u003e\u003cg id=\"_编组_2\" data-name=\"编组 2\"\u003e\u003cpath id=\"_路径_\" d=\"M228.765 30.362L179.644 2l-49.093 28.362 49.093 28.335 49.121-28.335z\" class=\"cls-1\" data-name=\"路径\"/\u003e\u003cpath id=\"_路径_2\" d=\"M152.896 215.413l7.001 129.366 19.747 11.405 19.774-11.405 7.002-129.366-26.776-15.453-26.748 15.453z\" class=\"cls-1\" data-name=\"路径 2\"/\u003e\u003cpath id=\"_路径_3\" d=\"M265.496 108.474L351.24 58.97l-35.91-20.758a27.35 27.35 0 0 0-13.676-3.802 25.819 25.819 0 0 0-13.183 3.555l-72.532 41.9z\" class=\"cls-1\" data-name=\"路径 3\"/\u003e\u003cpath id=\"_路径_4\" d=\"M265.414 150.43l85.743 49.503-35.938 20.759a27.35 27.35 0 0 1-13.675 3.802 25.818 25.818 0 0 1-13.183-3.556l-72.505-41.873z\" class=\"cls-1\" data-name=\"路径 4\"/\u003e\u003cpath id=\"_路径_5\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556L179.7 157.978z\" class=\"cls-1\" data-name=\"路径 5\"/\u003e\u003cpath id=\"_路径_6\" d=\"M179.644 158.033L8.049 58.97l35.91-20.758a27.35 27.35 0 0 1 13.676-3.802 25.819 25.819 0 0 1 13.183 3.555l158.412 91.46z\" class=\"cls-1\" data-name=\"路径 6\"/\u003e\u003cpath id=\"_路径_7\" fill=\"url(#linear-gradient)\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556l78.769-45.51a19.774 19.774 0 0 0 .793-34.243 1040.537 1040.537 0 0 1-20.321-11.706z\" data-name=\"路径 7\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"0.92 -5.08 357.16 368.16\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff}\u003c/style\u003e\u003c/defs\u003e\u003cg id=\"_编组_\" data-name=\"编组\"\u003e\u003cg id=\"_编组_2\" data-name=\"编组 2\"\u003e\u003cpath id=\"_路径_\" d=\"M228.765 30.362L179.644 2l-49.093 28.362 49.093 28.335 49.121-28.335z\" class=\"cls-1\" data-name=\"路径\"/\u003e\u003cpath id=\"_路径_2\" d=\"M152.896 215.413l7.001 129.366 19.747 11.405 19.774-11.405 7.002-129.366-26.776-15.453-26.748 15.453z\" class=\"cls-1\" data-name=\"路径 2\"/\u003e\u003cpath id=\"_路径_3\" d=\"M265.496 108.474L351.24 58.97l-35.91-20.758a27.35 27.35 0 0 0-13.676-3.802 25.819 25.819 0 0 0-13.183 3.555l-72.532 41.9z\" class=\"cls-1\" data-name=\"路径 3\"/\u003e\u003cpath id=\"_路径_4\" d=\"M265.414 150.43l85.743 49.503-35.938 20.759a27.35 27.35 0 0 1-13.675 3.802 25.818 25.818 0 0 1-13.183-3.556l-72.505-41.873z\" class=\"cls-1\" data-name=\"路径 4\"/\u003e\u003cpath id=\"_路径_5\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556L179.7 157.978z\" class=\"cls-1\" data-name=\"路径 5\"/\u003e\u003cpath id=\"_路径_6\" d=\"M179.644 158.033L8.049 58.97l35.91-20.758a27.35 27.35 0 0 1 13.676-3.802 25.819 25.819 0 0 1 13.183 3.555l158.412 91.46z\" class=\"cls-1\" data-name=\"路径 6\"/\u003e\u003cpath id=\"_路径_7\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556l78.769-45.51a19.774 19.774 0 0 0 .793-34.243 1040.537 1040.537 0 0 1-20.321-11.706z\" class=\"cls-1\" data-name=\"路径 7\"/\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/dragonfly/v1.1.7/v1.0.0/model.json b/server/meshmodel/dragonfly/v1.1.7/v1.0.0/model.json
new file mode 100644
index 00000000000..d0b21b1c00e
--- /dev/null
+++ b/server/meshmodel/dragonfly/v1.1.7/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Provisioning"
+ },
+ "displayName": "Dragonfly",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#4aba58",
+ "secondaryColor": "#8FFF9D",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"0.92 -5.08 357.16 368.16\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"linear-gradient\" x1=\"8.049\" x2=\"223.705\" y1=\"185.068\" y2=\"185.068\" gradientTransform=\"matrix(1 0 0 -1 0 362)\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#006934\" stop-opacity=\"0\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#006934\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#4aba58}\u003c/style\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"_编组_\" data-name=\"编组\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"_编组_2\" data-name=\"编组 2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_\" d=\"M228.765 30.362L179.644 2l-49.093 28.362 49.093 28.335 49.121-28.335z\" class=\"cls-1\" data-name=\"路径\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_2\" d=\"M152.896 215.413l7.001 129.366 19.747 11.405 19.774-11.405 7.002-129.366-26.776-15.453-26.748 15.453z\" class=\"cls-1\" data-name=\"路径 2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_3\" d=\"M265.496 108.474L351.24 58.97l-35.91-20.758a27.35 27.35 0 0 0-13.676-3.802 25.819 25.819 0 0 0-13.183 3.555l-72.532 41.9z\" class=\"cls-1\" data-name=\"路径 3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_4\" d=\"M265.414 150.43l85.743 49.503-35.938 20.759a27.35 27.35 0 0 1-13.675 3.802 25.818 25.818 0 0 1-13.183-3.556l-72.505-41.873z\" class=\"cls-1\" data-name=\"路径 4\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_5\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556L179.7 157.978z\" class=\"cls-1\" data-name=\"路径 5\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_6\" d=\"M179.644 158.033L8.049 58.97l35.91-20.758a27.35 27.35 0 0 1 13.676-3.802 25.819 25.819 0 0 1 13.183 3.555l158.412 91.46z\" class=\"cls-1\" data-name=\"路径 6\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_7\" fill=\"url(#linear-gradient)\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556l78.769-45.51a19.774 19.774 0 0 0 .793-34.243 1040.537 1040.537 0 0 1-20.321-11.706z\" data-name=\"路径 7\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"0.92 -5.08 357.16 368.16\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff}\u003c/style\u003e\u003c/defs\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"_编组_\" data-name=\"编组\"\u003e\u003cg xmlns=\"http://www.w3.org/2000/svg\" id=\"_编组_2\" data-name=\"编组 2\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_\" d=\"M228.765 30.362L179.644 2l-49.093 28.362 49.093 28.335 49.121-28.335z\" class=\"cls-1\" data-name=\"路径\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_2\" d=\"M152.896 215.413l7.001 129.366 19.747 11.405 19.774-11.405 7.002-129.366-26.776-15.453-26.748 15.453z\" class=\"cls-1\" data-name=\"路径 2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_3\" d=\"M265.496 108.474L351.24 58.97l-35.91-20.758a27.35 27.35 0 0 0-13.676-3.802 25.819 25.819 0 0 0-13.183 3.555l-72.532 41.9z\" class=\"cls-1\" data-name=\"路径 3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_4\" d=\"M265.414 150.43l85.743 49.503-35.938 20.759a27.35 27.35 0 0 1-13.675 3.802 25.818 25.818 0 0 1-13.183-3.556l-72.505-41.873z\" class=\"cls-1\" data-name=\"路径 4\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_5\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556L179.7 157.978z\" class=\"cls-1\" data-name=\"路径 5\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_6\" d=\"M179.644 158.033L8.049 58.97l35.91-20.758a27.35 27.35 0 0 1 13.676-3.802 25.819 25.819 0 0 1 13.183 3.555l158.412 91.46z\" class=\"cls-1\" data-name=\"路径 6\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" id=\"_路径_7\" d=\"M130.086 129.424L8.049 199.906l35.938 20.731a27.35 27.35 0 0 0 13.675 3.802 25.818 25.818 0 0 0 13.183-3.556l78.769-45.51a19.774 19.774 0 0 0 .793-34.243 1040.537 1040.537 0 0 1-20.321-11.706z\" class=\"cls-1\" data-name=\"路径 7\"\u003e\u003c/path\u003e\u003c/g\u003e\u003c/g\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.1.7"
+ },
+ "name": "dragonfly",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Container Registry",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Agent.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Agent.json
new file mode 100644
index 00000000000..63239763c44
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Agent.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Agent",
+ "schema": "{\n \"description\": \"Agent is the Schema for the Agents API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"AgentSpec defines the desired state of the Agent\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config holds the Agent configuration. At most one of [`Config`, `ConfigRef`] can be specified.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configRef\": {\n \"description\": \"ConfigRef contains a reference to an existing Kubernetes Secret holding the Agent configuration.\\nAgent settings must be specified as yaml, under a single \\\"agent.yml\\\" entry. At most one of [`Config`, `ConfigRef`]\\ncan be specified.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"daemonSet\": {\n \"description\": \"DaemonSet specifies the Agent should be deployed as a DaemonSet, and allows providing its spec.\\nCannot be used along with `deployment` or `statefulSet`.\",\n \"properties\": {\n \"podTemplate\": {\n \"description\": \"PodTemplateSpec describes the data a pod should have when created from a template\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"updateStrategy\": {\n \"description\": \"DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.\",\n \"properties\": {\n \"rollingUpdate\": {\n \"description\": \"Rolling update config params. Present only if type = \\\"RollingUpdate\\\".\\n---\\nTODO: Update this to follow our convention for oneOf, whatever we decide it\\nto be. Same as Deployment `strategy.rollingUpdate`.\\nSee https://github.com/kubernetes/kubernetes/issues/35345\",\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of nodes with an existing available DaemonSet pod that\\ncan have an updated DaemonSet pod during during an update.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nThis can not be 0 if MaxUnavailable is 0.\\nAbsolute number is calculated from percentage by rounding up to a minimum of 1.\\nDefault value is 0.\\nExample: when this is set to 30%, at most 30% of the total number of nodes\\nthat should be running the daemon pod (i.e. status.desiredNumberScheduled)\\ncan have their a new pod created before the old pod is marked as deleted.\\nThe update starts by launching new pods on 30% of nodes. Once an updated\\npod is available (Ready for at least minReadySeconds) the old DaemonSet pod\\non that node is marked deleted. If the old pod becomes unavailable for any\\nreason (Ready transitions to false, is evicted, or is drained) an updated\\npod is immediatedly created on that node without considering surge limits.\\nAllowing surge implies the possibility that the resources consumed by the\\ndaemonset on any given node can double if the readiness check fails, and\\nso resource intensive daemonsets should take into account that they may\\ncause evictions during disruption.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of DaemonSet pods that can be unavailable during the\\nupdate. Value can be an absolute number (ex: 5) or a percentage of total\\nnumber of DaemonSet pods at the start of the update (ex: 10%). Absolute\\nnumber is calculated from percentage by rounding up.\\nThis cannot be 0 if MaxSurge is 0\\nDefault value is 1.\\nExample: when this is set to 30%, at most 30% of the total number of nodes\\nthat should be running the daemon pod (i.e. status.desiredNumberScheduled)\\ncan have their pods stopped for an update at any given time. The update\\nstarts by stopping at most 30% of those DaemonSet pods and then brings\\nup new DaemonSet pods in their place. Once the new pods are available,\\nit then proceeds onto other DaemonSet pods, thus ensuring that at least\\n70% of original number of DaemonSet pods are available at all times during\\nthe update.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of daemon set update. Can be \\\"RollingUpdate\\\" or \\\"OnDelete\\\". Default is RollingUpdate.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"deployment\": {\n \"description\": \"Deployment specifies the Agent should be deployed as a Deployment, and allows providing its spec.\\nCannot be used along with `daemonSet` or `statefulSet`.\",\n \"properties\": {\n \"podTemplate\": {\n \"description\": \"PodTemplateSpec describes the data a pod should have when created from a template\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"replicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"strategy\": {\n \"description\": \"DeploymentStrategy describes how to replace existing pods with new ones.\",\n \"properties\": {\n \"rollingUpdate\": {\n \"description\": \"Rolling update config params. Present only if DeploymentStrategyType =\\nRollingUpdate.\\n---\\nTODO: Update this to follow our convention for oneOf, whatever we decide it\\nto be.\",\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be scheduled above the desired number of\\npods.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nThis can not be 0 if MaxUnavailable is 0.\\nAbsolute number is calculated from percentage by rounding up.\\nDefaults to 25%.\\nExample: when this is set to 30%, the new ReplicaSet can be scaled up immediately when\\nthe rolling update starts, such that the total number of old and new pods do not exceed\\n130% of desired pods. Once old pods have been killed,\\nnew ReplicaSet can be scaled up further, ensuring that total number of pods running\\nat any time during the update is at most 130% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be unavailable during the update.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nAbsolute number is calculated from percentage by rounding down.\\nThis can not be 0 if MaxSurge is 0.\\nDefaults to 25%.\\nExample: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods\\nimmediately when the rolling update starts. Once new pods are ready, old ReplicaSet\\ncan be scaled down further, followed by scaling up the new ReplicaSet, ensuring\\nthat the total number of pods available at all times during the update is at\\nleast 70% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of deployment. Can be \\\"Recreate\\\" or \\\"RollingUpdate\\\". Default is RollingUpdate.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs is a reference to a list of Elasticsearch clusters running in the same Kubernetes cluster.\\nDue to existing limitations, only a single ES cluster is currently supported.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"outputName\": {\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"fleetServerEnabled\": {\n \"description\": \"FleetServerEnabled determines whether this Agent will launch Fleet Server. Don't set unless `mode` is set to `fleet`.\",\n \"type\": \"boolean\"\n },\n \"fleetServerRef\": {\n \"description\": \"FleetServerRef is a reference to Fleet Server that this Agent should connect to to obtain it's configuration.\\nDon't set unless `mode` is set to `fleet`.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"http\": {\n \"description\": \"HTTP holds the HTTP layer configuration for the Agent in Fleet mode with Fleet Server enabled.\",\n \"properties\": {\n \"service\": {\n \"description\": \"Service defines the template for the associated Kubernetes Service object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"ObjectMeta is the metadata of the service.\\nThe name and namespace provided here are managed by ECK and will be ignored.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec is the specification of the service.\",\n \"properties\": {\n \"allocateLoadBalancerNodePorts\": {\n \"description\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\",\n \"type\": \"boolean\"\n },\n \"clusterIP\": {\n \"description\": \"clusterIP is the IP address of the service and is usually assigned\\nrandomly. If an address is specified manually, is in-range (as per\\nsystem configuration), and is not in use, it will be allocated to the\\nservice; otherwise creation of the service will fail. This field may not\\nbe changed through updates unless the type field is also being changed\\nto ExternalName (which requires this field to be blank) or the type\\nfield is being changed from ExternalName (in which case this field may\\noptionally be specified, as describe above). Valid values are \\\"None\\\",\\nempty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a\\n\\\"headless service\\\" (no virtual IP), which is useful when direct endpoint\\nconnections are preferred and proxying is not required. Only applies to\\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\\nwhen creating a Service of type ExternalName, creation will fail. This\\nfield will be wiped when updating a Service to type ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"clusterIPs\": {\n \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\\nThese IPs must correspond to the values of the ipFamilies field. Both\\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalIPs\": {\n \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster\\nwill also accept traffic for this service. These IPs are not managed by\\nKubernetes. The user is responsible for ensuring that traffic arrives\\nat a node with this IP. A common example is external load-balancers\\nthat are not part of the Kubernetes system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalName\": {\n \"description\": \"externalName is the external reference that discovery mechanisms will\\nreturn as an alias for this service (e.g. a DNS CNAME record). No\\nproxying will be involved. Must be a lowercase RFC-1123 hostname\\n(https://tools.ietf.org/html/rfc1123) and requires `type` to be \\\"ExternalName\\\".\",\n \"type\": \"string\"\n },\n \"externalTrafficPolicy\": {\n \"description\": \"externalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts,\\nExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure\\nthe service in a way that assumes that external load balancers will take care\\nof balancing the service traffic between nodes, and so each node will deliver\\ntraffic only to the node-local endpoints of the service, without masquerading\\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\\nbe dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of\\nrouting to all endpoints evenly (possibly modified by topology and other\\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\\nwithin the cluster will always get \\\"Cluster\\\" semantics, but clients sending to\\na NodePort from within the cluster may need to take traffic policy into account\\nwhen picking a node.\",\n \"type\": \"string\"\n },\n \"healthCheckNodePort\": {\n \"description\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\nThis field cannot be updated once set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"internalTrafficPolicy\": {\n \"description\": \"InternalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods\\nonly want to talk to endpoints of the service on the same node as the pod,\\ndropping the traffic if there are no local endpoints. The default value,\\n\\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly\\n(possibly modified by topology and other features).\",\n \"type\": \"string\"\n },\n \"ipFamilies\": {\n \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice. This field is usually assigned automatically based on cluster\\nconfiguration and the ipFamilyPolicy field. If this field is specified\\nmanually, the requested family is available in the cluster,\\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\\nthe service will fail. This field is conditionally mutable: it allows\\nfor adding or removing a secondary IP family, but it does not allow\\nchanging the primary IP family of the Service. Valid values are \\\"IPv4\\\"\\nand \\\"IPv6\\\". This field only applies to Services of types ClusterIP,\\nNodePort, and LoadBalancer, and does apply to \\\"headless\\\" services.\\nThis field will be wiped when updating a Service to type ExternalName.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\",\n \"items\": {\n \"description\": \"IPFamily represents the IP Family (IPv4 or IPv6). This type is used\\nto express the family of an IP expressed by a type (e.g. service.spec.ipFamilies).\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ipFamilyPolicy\": {\n \"description\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service. If there is no value provided, then this field will be set\\nto SingleStack. Services can be \\\"SingleStack\\\" (a single IP family),\\n\\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or\\na single IP family on single-stack clusters), or \\\"RequireDualStack\\\"\\n(two IP families on dual-stack configured clusters, otherwise fail). The\\nipFamilies and clusterIPs fields depend on the value of this field. This\\nfield will be wiped when updating a service to type ExternalName.\",\n \"type\": \"string\"\n },\n \"loadBalancerClass\": {\n \"description\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\",\n \"type\": \"string\"\n },\n \"loadBalancerIP\": {\n \"description\": \"Only applies to Service Type: LoadBalancer.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\nDeprecated: This field was under-specified and its meaning varies across implementations.\\nUsing it is non-portable and it may not support dual-stack.\\nUsers are encouraged to use implementation-specific annotations when available.\",\n \"type\": \"string\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"If specified and supported by the platform, this will restrict traffic through the cloud-provider\\nload-balancer will be restricted to the specified client IPs. This field will be ignored if the\\ncloud-provider does not support the feature.\\\"\\nMore info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ports\": {\n \"description\": \"The list of ports that are exposed by this service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"description\": \"ServicePort contains information on service's port.\",\n \"properties\": {\n \"appProtocol\": {\n \"description\": \"The application protocol for this port.\\nThis is used as a hint for implementations to offer richer behavior for protocols that they understand.\\nThis field follows standard Kubernetes label syntax.\\nValid values are either:\\n\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per\\nRFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n\\n* Kubernetes-defined prefixed names:\\n * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n\\n* Other protocols should use implementation-defined prefixed names such as\\nmycompany.com/my-custom-protocol.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of this port within the service. This must be a DNS_LABEL.\\nAll ports within a ServiceSpec must have unique names. When considering\\nthe endpoints for a Service, this must match the 'name' field in the\\nEndpointPort.\\nOptional if only one ServicePort is defined on this service.\",\n \"type\": \"string\"\n },\n \"nodePort\": {\n \"description\": \"The port on each node on which this service is exposed when type is\\nNodePort or LoadBalancer. Usually assigned by the system. If a value is\\nspecified, in-range, and not in use it will be used, otherwise the\\noperation will fail. If not specified, a port will be allocated if this\\nService requires one. If this field is specified when creating a\\nService which does not need it, creation will fail. This field will be\\nwiped when updating a Service to no longer need it (e.g. changing type\\nfrom NodePort to ClusterIP).\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"port\": {\n \"description\": \"The port that will be exposed by this service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\".\\nDefault is TCP.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the pods targeted by the service.\\nNumber must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\\nIf this is a string, it will be looked up as a named port in the\\ntarget Pod's container ports. If this is not specified, the value\\nof the 'port' field is used (an identity map).\\nThis field is ignored for services with clusterIP=None, and should be\\nomitted or set equal to the 'port' field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"port\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishNotReadyAddresses\": {\n \"description\": \"publishNotReadyAddresses indicates that any agent which deals with endpoints for this\\nService should disregard any indications of ready/not-ready.\\nThe primary use case for setting this field is for a StatefulSet's Headless Service to\\npropagate SRV DNS records for its Pods for the purpose of peer discovery.\\nThe Kubernetes controllers that generate Endpoints and EndpointSlice resources for\\nServices interpret this to mean that all endpoints are considered \\\"ready\\\" even if the\\nPods themselves are not. Agents which consume only Kubernetes generated endpoints\\nthrough the Endpoints or EndpointSlice resources can safely assume this behavior.\",\n \"type\": \"boolean\"\n },\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Route service traffic to pods with label keys and values matching this\\nselector. If empty or not present, the service is assumed to have an\\nexternal process managing its endpoints, which Kubernetes will not\\nmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.\\nIgnored if type is ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sessionAffinity\": {\n \"description\": \"Supports \\\"ClientIP\\\" and \\\"None\\\". Used to maintain session affinity.\\nEnable client IP based session affinity.\\nMust be ClientIP or None.\\nDefaults to None.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"sessionAffinityConfig\": {\n \"description\": \"sessionAffinityConfig contains the configurations of session affinity.\",\n \"properties\": {\n \"clientIP\": {\n \"description\": \"clientIP contains the configurations of Client IP based session affinity.\",\n \"properties\": {\n \"timeoutSeconds\": {\n \"description\": \"timeoutSeconds specifies the seconds of ClientIP type session sticky time.\\nThe value must be \\u003e0 \\u0026\\u0026 \\u003c=86400(for 1 day) if ServiceAffinity == \\\"ClientIP\\\".\\nDefault value is 10800(for 3 hours).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"trafficDistribution\": {\n \"description\": \"TrafficDistribution offers a way to express preferences for how traffic is\\ndistributed to Service endpoints. Implementations can use this field as a\\nhint, but are not required to guarantee strict adherence. If the field is\\nnot set, the implementation will apply its default routing strategy. If set\\nto \\\"PreferClose\\\", implementations should prioritize endpoints that are\\ntopologically close (e.g., same zone).\\nThis is an alpha field and requires enabling ServiceTrafficDistribution feature.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type determines how the Service is exposed. Defaults to ClusterIP. Valid\\noptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.\\n\\\"ClusterIP\\\" allocates a cluster-internal IP address for load-balancing\\nto endpoints. Endpoints are determined by the selector or if that is not\\nspecified, by manual construction of an Endpoints object or\\nEndpointSlice objects. If clusterIP is \\\"None\\\", no virtual IP is\\nallocated and the endpoints are published as a set of endpoints rather\\nthan a virtual IP.\\n\\\"NodePort\\\" builds on ClusterIP and allocates a port on every node which\\nroutes to the same endpoints as the clusterIP.\\n\\\"LoadBalancer\\\" builds on NodePort and creates an external load-balancer\\n(if supported in the current cloud) which routes to the same endpoints\\nas the clusterIP.\\n\\\"ExternalName\\\" aliases this service to the specified externalName.\\nSeveral other fields do not apply to ExternalName services.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS defines options for configuring TLS for HTTP.\",\n \"properties\": {\n \"certificate\": {\n \"description\": \"Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS.\\nThe referenced secret should contain the following:\\n\\n\\n- `ca.crt`: The certificate authority (optional).\\n- `tls.crt`: The certificate (or a chain).\\n- `tls.key`: The private key to the first certificate in the certificate chain.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selfSignedCertificate\": {\n \"description\": \"SelfSignedCertificate allows configuring the self-signed certificate generated by the operator.\",\n \"properties\": {\n \"disabled\": {\n \"description\": \"Disabled indicates that the provisioning of the self-signed certifcate should be disabled.\",\n \"type\": \"boolean\"\n },\n \"subjectAltNames\": {\n \"description\": \"SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate.\",\n \"items\": {\n \"description\": \"SubjectAlternativeName represents a SAN entry in a x509 certificate.\",\n \"properties\": {\n \"dns\": {\n \"description\": \"DNS is the DNS name of the subject.\",\n \"type\": \"string\"\n },\n \"ip\": {\n \"description\": \"IP is the IP address of the subject.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Image is the Agent Docker image to deploy. Version has to match the Agent in the image.\",\n \"type\": \"string\"\n },\n \"kibanaRef\": {\n \"description\": \"KibanaRef is a reference to Kibana where Fleet should be set up and this Agent should be enrolled. Don't set\\nunless `mode` is set to `fleet`.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"mode\": {\n \"description\": \"Mode specifies the source of configuration for the Agent. The configuration can be specified locally through\\n`config` or `configRef` (`standalone` mode), or come from Fleet during runtime (`fleet` mode).\\nDefaults to `standalone` mode.\",\n \"enum\": [\n \"standalone\",\n \"fleet\"\n ],\n \"type\": \"string\"\n },\n \"policyID\": {\n \"description\": \"PolicyID determines into which Agent Policy this Agent will be enrolled.\\nThis field will become mandatory in a future release, default policies are deprecated since 8.1.0.\",\n \"type\": \"string\"\n },\n \"revisionHistoryLimit\": {\n \"description\": \"RevisionHistoryLimit is the number of revisions to retain to allow rollback in the underlying DaemonSet or Deployment or StatefulSet.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"secureSettings\": {\n \"description\": \"SecureSettings is a list of references to Kubernetes Secrets containing sensitive configuration options for the Agent.\\nSecrets data can be then referenced in the Agent config using the Secret's keys or as specified in `Entries` field of\\neach SecureSetting.\",\n \"items\": {\n \"description\": \"SecretSource defines a data source based on a Kubernetes Secret.\",\n \"properties\": {\n \"entries\": {\n \"description\": \"Entries define how to project each key-value pair in the secret to filesystem paths.\\nIf not defined, all keys will be projected to similarly named paths in the filesystem.\\nIf defined, only the specified keys will be projected to the corresponding paths.\",\n \"items\": {\n \"description\": \"KeyToPath defines how to map a key in a Secret object to a filesystem path.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key contained in the secret.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the relative file path to map the key to.\\nPath must not be an absolute file path and must not contain any \\\"..\\\" components.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is used to check access from the current resource to an Elasticsearch resource in a different namespace.\\nCan only be used if ECK is enforcing RBAC on references.\",\n \"type\": \"string\"\n },\n \"statefulSet\": {\n \"description\": \"StatefulSet specifies the Agent should be deployed as a StatefulSet, and allows providing its spec.\\nCannot be used along with `daemonSet` or `deployment`.\",\n \"properties\": {\n \"podManagementPolicy\": {\n \"default\": \"Parallel\",\n \"description\": \"PodManagementPolicy controls how pods are created during initial scale up,\\nwhen replacing pods on nodes, or when scaling down. The default policy is\\n`Parallel`, where pods are created in parallel to match the desired scale\\nwithout waiting, and on scale down will delete all pods at once.\\nThe alternative policy is `OrderedReady`, the default for vanilla kubernetes\\nStatefulSets, where pods are created in increasing order in increasing order\\n(pod-0, then pod-1, etc.) and the controller will wait until each pod is ready before\\ncontinuing. When scaling down, the pods are removed in the opposite order.\",\n \"enum\": [\n \"OrderedReady\",\n \"Parallel\"\n ],\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"PodTemplateSpec describes the data a pod should have when created from a template\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"replicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"serviceName\": {\n \"type\": \"string\"\n },\n \"volumeClaimTemplates\": {\n \"description\": \"VolumeClaimTemplates is a list of persistent volume claims to be used by each Pod.\\nEvery claim in this list must have a matching volumeMount in one of the containers defined in the PodTemplate.\\nItems defined here take precedence over any default claims added by the operator with the same name.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaim is a user's request for and claim to a persistent volume\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"version\": {\n \"description\": \"Version of the Agent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"version\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Agent\",\n \"type\": \"object\"\n}",
+ "version": "agent.k8s.elastic.co/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Agent",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/ApmServer.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/ApmServer.json
new file mode 100644
index 00000000000..050b5e8ef9b
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/ApmServer.json
@@ -0,0 +1,195 @@
+{
+ "capabilities": [
+ {
+ "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.",
+ "displayName": "Performance Test",
+ "entityState": [
+ "instance"
+ ],
+ "key": "",
+ "kind": "action",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "perf-test",
+ "type": "operator",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the workload specific setting of a component",
+ "displayName": "Workload Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "config",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure Labels And Annotations for the component ",
+ "displayName": "Labels and Annotations Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "labels-and-annotations",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View relationships for the component",
+ "displayName": "Relationships",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "relationship",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View Component Definition ",
+ "displayName": "Json Schema",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "definition",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the visual styles for the component",
+ "displayName": "Styling",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Change the shape of the component",
+ "displayName": "Change Shape",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "shape",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Drag and Drop a component into a parent component in graph view",
+ "displayName": "Compound Drag And Drop",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "interaction",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "compoundDnd",
+ "type": "graph",
+ "version": "0.7.0"
+ }
+ ],
+ "component": {
+ "kind": "ApmServer",
+ "schema": "{\n \"description\": \"ApmServer represents an APM Server resource in a Kubernetes cluster.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ApmServerSpec holds the specification of an APM Server.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config holds the APM Server configuration. See: https://www.elastic.co/guide/en/apm/server/current/configuring-howto-apm-server.html\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"count\": {\n \"description\": \"Count of APM Server instances to deploy.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"elasticsearchRef\": {\n \"description\": \"ElasticsearchRef is a reference to the output Elasticsearch cluster running in the same Kubernetes cluster.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"http\": {\n \"description\": \"HTTP holds the HTTP layer configuration for the APM Server resource.\",\n \"properties\": {\n \"service\": {\n \"description\": \"Service defines the template for the associated Kubernetes Service object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"ObjectMeta is the metadata of the service.\\nThe name and namespace provided here are managed by ECK and will be ignored.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec is the specification of the service.\",\n \"properties\": {\n \"allocateLoadBalancerNodePorts\": {\n \"description\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\",\n \"type\": \"boolean\"\n },\n \"clusterIP\": {\n \"description\": \"clusterIP is the IP address of the service and is usually assigned\\nrandomly. If an address is specified manually, is in-range (as per\\nsystem configuration), and is not in use, it will be allocated to the\\nservice; otherwise creation of the service will fail. This field may not\\nbe changed through updates unless the type field is also being changed\\nto ExternalName (which requires this field to be blank) or the type\\nfield is being changed from ExternalName (in which case this field may\\noptionally be specified, as describe above). Valid values are \\\"None\\\",\\nempty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a\\n\\\"headless service\\\" (no virtual IP), which is useful when direct endpoint\\nconnections are preferred and proxying is not required. Only applies to\\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\\nwhen creating a Service of type ExternalName, creation will fail. This\\nfield will be wiped when updating a Service to type ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"clusterIPs\": {\n \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\\nThese IPs must correspond to the values of the ipFamilies field. Both\\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalIPs\": {\n \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster\\nwill also accept traffic for this service. These IPs are not managed by\\nKubernetes. The user is responsible for ensuring that traffic arrives\\nat a node with this IP. A common example is external load-balancers\\nthat are not part of the Kubernetes system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalName\": {\n \"description\": \"externalName is the external reference that discovery mechanisms will\\nreturn as an alias for this service (e.g. a DNS CNAME record). No\\nproxying will be involved. Must be a lowercase RFC-1123 hostname\\n(https://tools.ietf.org/html/rfc1123) and requires `type` to be \\\"ExternalName\\\".\",\n \"type\": \"string\"\n },\n \"externalTrafficPolicy\": {\n \"description\": \"externalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts,\\nExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure\\nthe service in a way that assumes that external load balancers will take care\\nof balancing the service traffic between nodes, and so each node will deliver\\ntraffic only to the node-local endpoints of the service, without masquerading\\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\\nbe dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of\\nrouting to all endpoints evenly (possibly modified by topology and other\\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\\nwithin the cluster will always get \\\"Cluster\\\" semantics, but clients sending to\\na NodePort from within the cluster may need to take traffic policy into account\\nwhen picking a node.\",\n \"type\": \"string\"\n },\n \"healthCheckNodePort\": {\n \"description\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\nThis field cannot be updated once set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"internalTrafficPolicy\": {\n \"description\": \"InternalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods\\nonly want to talk to endpoints of the service on the same node as the pod,\\ndropping the traffic if there are no local endpoints. The default value,\\n\\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly\\n(possibly modified by topology and other features).\",\n \"type\": \"string\"\n },\n \"ipFamilies\": {\n \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice. This field is usually assigned automatically based on cluster\\nconfiguration and the ipFamilyPolicy field. If this field is specified\\nmanually, the requested family is available in the cluster,\\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\\nthe service will fail. This field is conditionally mutable: it allows\\nfor adding or removing a secondary IP family, but it does not allow\\nchanging the primary IP family of the Service. Valid values are \\\"IPv4\\\"\\nand \\\"IPv6\\\". This field only applies to Services of types ClusterIP,\\nNodePort, and LoadBalancer, and does apply to \\\"headless\\\" services.\\nThis field will be wiped when updating a Service to type ExternalName.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\",\n \"items\": {\n \"description\": \"IPFamily represents the IP Family (IPv4 or IPv6). This type is used\\nto express the family of an IP expressed by a type (e.g. service.spec.ipFamilies).\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ipFamilyPolicy\": {\n \"description\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service. If there is no value provided, then this field will be set\\nto SingleStack. Services can be \\\"SingleStack\\\" (a single IP family),\\n\\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or\\na single IP family on single-stack clusters), or \\\"RequireDualStack\\\"\\n(two IP families on dual-stack configured clusters, otherwise fail). The\\nipFamilies and clusterIPs fields depend on the value of this field. This\\nfield will be wiped when updating a service to type ExternalName.\",\n \"type\": \"string\"\n },\n \"loadBalancerClass\": {\n \"description\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\",\n \"type\": \"string\"\n },\n \"loadBalancerIP\": {\n \"description\": \"Only applies to Service Type: LoadBalancer.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\nDeprecated: This field was under-specified and its meaning varies across implementations.\\nUsing it is non-portable and it may not support dual-stack.\\nUsers are encouraged to use implementation-specific annotations when available.\",\n \"type\": \"string\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"If specified and supported by the platform, this will restrict traffic through the cloud-provider\\nload-balancer will be restricted to the specified client IPs. This field will be ignored if the\\ncloud-provider does not support the feature.\\\"\\nMore info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ports\": {\n \"description\": \"The list of ports that are exposed by this service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"description\": \"ServicePort contains information on service's port.\",\n \"properties\": {\n \"appProtocol\": {\n \"description\": \"The application protocol for this port.\\nThis is used as a hint for implementations to offer richer behavior for protocols that they understand.\\nThis field follows standard Kubernetes label syntax.\\nValid values are either:\\n\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per\\nRFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n\\n* Kubernetes-defined prefixed names:\\n * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n\\n* Other protocols should use implementation-defined prefixed names such as\\nmycompany.com/my-custom-protocol.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of this port within the service. This must be a DNS_LABEL.\\nAll ports within a ServiceSpec must have unique names. When considering\\nthe endpoints for a Service, this must match the 'name' field in the\\nEndpointPort.\\nOptional if only one ServicePort is defined on this service.\",\n \"type\": \"string\"\n },\n \"nodePort\": {\n \"description\": \"The port on each node on which this service is exposed when type is\\nNodePort or LoadBalancer. Usually assigned by the system. If a value is\\nspecified, in-range, and not in use it will be used, otherwise the\\noperation will fail. If not specified, a port will be allocated if this\\nService requires one. If this field is specified when creating a\\nService which does not need it, creation will fail. This field will be\\nwiped when updating a Service to no longer need it (e.g. changing type\\nfrom NodePort to ClusterIP).\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"port\": {\n \"description\": \"The port that will be exposed by this service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\".\\nDefault is TCP.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the pods targeted by the service.\\nNumber must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\\nIf this is a string, it will be looked up as a named port in the\\ntarget Pod's container ports. If this is not specified, the value\\nof the 'port' field is used (an identity map).\\nThis field is ignored for services with clusterIP=None, and should be\\nomitted or set equal to the 'port' field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"port\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishNotReadyAddresses\": {\n \"description\": \"publishNotReadyAddresses indicates that any agent which deals with endpoints for this\\nService should disregard any indications of ready/not-ready.\\nThe primary use case for setting this field is for a StatefulSet's Headless Service to\\npropagate SRV DNS records for its Pods for the purpose of peer discovery.\\nThe Kubernetes controllers that generate Endpoints and EndpointSlice resources for\\nServices interpret this to mean that all endpoints are considered \\\"ready\\\" even if the\\nPods themselves are not. Agents which consume only Kubernetes generated endpoints\\nthrough the Endpoints or EndpointSlice resources can safely assume this behavior.\",\n \"type\": \"boolean\"\n },\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Route service traffic to pods with label keys and values matching this\\nselector. If empty or not present, the service is assumed to have an\\nexternal process managing its endpoints, which Kubernetes will not\\nmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.\\nIgnored if type is ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sessionAffinity\": {\n \"description\": \"Supports \\\"ClientIP\\\" and \\\"None\\\". Used to maintain session affinity.\\nEnable client IP based session affinity.\\nMust be ClientIP or None.\\nDefaults to None.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"sessionAffinityConfig\": {\n \"description\": \"sessionAffinityConfig contains the configurations of session affinity.\",\n \"properties\": {\n \"clientIP\": {\n \"description\": \"clientIP contains the configurations of Client IP based session affinity.\",\n \"properties\": {\n \"timeoutSeconds\": {\n \"description\": \"timeoutSeconds specifies the seconds of ClientIP type session sticky time.\\nThe value must be \\u003e0 \\u0026\\u0026 \\u003c=86400(for 1 day) if ServiceAffinity == \\\"ClientIP\\\".\\nDefault value is 10800(for 3 hours).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"trafficDistribution\": {\n \"description\": \"TrafficDistribution offers a way to express preferences for how traffic is\\ndistributed to Service endpoints. Implementations can use this field as a\\nhint, but are not required to guarantee strict adherence. If the field is\\nnot set, the implementation will apply its default routing strategy. If set\\nto \\\"PreferClose\\\", implementations should prioritize endpoints that are\\ntopologically close (e.g., same zone).\\nThis is an alpha field and requires enabling ServiceTrafficDistribution feature.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type determines how the Service is exposed. Defaults to ClusterIP. Valid\\noptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.\\n\\\"ClusterIP\\\" allocates a cluster-internal IP address for load-balancing\\nto endpoints. Endpoints are determined by the selector or if that is not\\nspecified, by manual construction of an Endpoints object or\\nEndpointSlice objects. If clusterIP is \\\"None\\\", no virtual IP is\\nallocated and the endpoints are published as a set of endpoints rather\\nthan a virtual IP.\\n\\\"NodePort\\\" builds on ClusterIP and allocates a port on every node which\\nroutes to the same endpoints as the clusterIP.\\n\\\"LoadBalancer\\\" builds on NodePort and creates an external load-balancer\\n(if supported in the current cloud) which routes to the same endpoints\\nas the clusterIP.\\n\\\"ExternalName\\\" aliases this service to the specified externalName.\\nSeveral other fields do not apply to ExternalName services.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS defines options for configuring TLS for HTTP.\",\n \"properties\": {\n \"certificate\": {\n \"description\": \"Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS.\\nThe referenced secret should contain the following:\\n\\n\\n- `ca.crt`: The certificate authority (optional).\\n- `tls.crt`: The certificate (or a chain).\\n- `tls.key`: The private key to the first certificate in the certificate chain.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selfSignedCertificate\": {\n \"description\": \"SelfSignedCertificate allows configuring the self-signed certificate generated by the operator.\",\n \"properties\": {\n \"disabled\": {\n \"description\": \"Disabled indicates that the provisioning of the self-signed certifcate should be disabled.\",\n \"type\": \"boolean\"\n },\n \"subjectAltNames\": {\n \"description\": \"SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate.\",\n \"items\": {\n \"description\": \"SubjectAlternativeName represents a SAN entry in a x509 certificate.\",\n \"properties\": {\n \"dns\": {\n \"description\": \"DNS is the DNS name of the subject.\",\n \"type\": \"string\"\n },\n \"ip\": {\n \"description\": \"IP is the IP address of the subject.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Image is the APM Server Docker image to deploy.\",\n \"type\": \"string\"\n },\n \"kibanaRef\": {\n \"description\": \"KibanaRef is a reference to a Kibana instance running in the same Kubernetes cluster.\\nIt allows APM agent central configuration management in Kibana.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"podTemplate\": {\n \"description\": \"PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the APM Server pods.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"revisionHistoryLimit\": {\n \"description\": \"RevisionHistoryLimit is the number of revisions to retain to allow rollback in the underlying Deployment.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"secureSettings\": {\n \"description\": \"SecureSettings is a list of references to Kubernetes secrets containing sensitive configuration options for APM Server.\",\n \"items\": {\n \"description\": \"SecretSource defines a data source based on a Kubernetes Secret.\",\n \"properties\": {\n \"entries\": {\n \"description\": \"Entries define how to project each key-value pair in the secret to filesystem paths.\\nIf not defined, all keys will be projected to similarly named paths in the filesystem.\\nIf defined, only the specified keys will be projected to the corresponding paths.\",\n \"items\": {\n \"description\": \"KeyToPath defines how to map a key in a Secret object to a filesystem path.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key contained in the secret.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the relative file path to map the key to.\\nPath must not be an absolute file path and must not contain any \\\"..\\\" components.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is used to check access from the current resource to a resource (for ex. Elasticsearch) in a different namespace.\\nCan only be used if ECK is enforcing RBAC on references.\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"Version of the APM Server.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"version\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Apm Server\",\n \"type\": \"object\"\n}",
+ "version": "apm.k8s.elastic.co/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Apm Server",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Beat.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Beat.json
new file mode 100644
index 00000000000..665bbb590e7
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Beat.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Beat",
+ "schema": "{\n \"description\": \"Beat is the Schema for the Beats API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"BeatSpec defines the desired state of a Beat.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config holds the Beat configuration. At most one of [`Config`, `ConfigRef`] can be specified.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configRef\": {\n \"description\": \"ConfigRef contains a reference to an existing Kubernetes Secret holding the Beat configuration.\\nBeat settings must be specified as yaml, under a single \\\"beat.yml\\\" entry. At most one of [`Config`, `ConfigRef`]\\ncan be specified.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"daemonSet\": {\n \"description\": \"DaemonSet specifies the Beat should be deployed as a DaemonSet, and allows providing its spec.\\nCannot be used along with `deployment`. If both are absent a default for the Type is used.\",\n \"properties\": {\n \"podTemplate\": {\n \"description\": \"PodTemplateSpec describes the data a pod should have when created from a template\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"updateStrategy\": {\n \"description\": \"DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.\",\n \"properties\": {\n \"rollingUpdate\": {\n \"description\": \"Rolling update config params. Present only if type = \\\"RollingUpdate\\\".\\n---\\nTODO: Update this to follow our convention for oneOf, whatever we decide it\\nto be. Same as Deployment `strategy.rollingUpdate`.\\nSee https://github.com/kubernetes/kubernetes/issues/35345\",\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of nodes with an existing available DaemonSet pod that\\ncan have an updated DaemonSet pod during during an update.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nThis can not be 0 if MaxUnavailable is 0.\\nAbsolute number is calculated from percentage by rounding up to a minimum of 1.\\nDefault value is 0.\\nExample: when this is set to 30%, at most 30% of the total number of nodes\\nthat should be running the daemon pod (i.e. status.desiredNumberScheduled)\\ncan have their a new pod created before the old pod is marked as deleted.\\nThe update starts by launching new pods on 30% of nodes. Once an updated\\npod is available (Ready for at least minReadySeconds) the old DaemonSet pod\\non that node is marked deleted. If the old pod becomes unavailable for any\\nreason (Ready transitions to false, is evicted, or is drained) an updated\\npod is immediatedly created on that node without considering surge limits.\\nAllowing surge implies the possibility that the resources consumed by the\\ndaemonset on any given node can double if the readiness check fails, and\\nso resource intensive daemonsets should take into account that they may\\ncause evictions during disruption.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of DaemonSet pods that can be unavailable during the\\nupdate. Value can be an absolute number (ex: 5) or a percentage of total\\nnumber of DaemonSet pods at the start of the update (ex: 10%). Absolute\\nnumber is calculated from percentage by rounding up.\\nThis cannot be 0 if MaxSurge is 0\\nDefault value is 1.\\nExample: when this is set to 30%, at most 30% of the total number of nodes\\nthat should be running the daemon pod (i.e. status.desiredNumberScheduled)\\ncan have their pods stopped for an update at any given time. The update\\nstarts by stopping at most 30% of those DaemonSet pods and then brings\\nup new DaemonSet pods in their place. Once the new pods are available,\\nit then proceeds onto other DaemonSet pods, thus ensuring that at least\\n70% of original number of DaemonSet pods are available at all times during\\nthe update.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of daemon set update. Can be \\\"RollingUpdate\\\" or \\\"OnDelete\\\". Default is RollingUpdate.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"deployment\": {\n \"description\": \"Deployment specifies the Beat should be deployed as a Deployment, and allows providing its spec.\\nCannot be used along with `daemonSet`. If both are absent a default for the Type is used.\",\n \"properties\": {\n \"podTemplate\": {\n \"description\": \"PodTemplateSpec describes the data a pod should have when created from a template\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"replicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"strategy\": {\n \"description\": \"DeploymentStrategy describes how to replace existing pods with new ones.\",\n \"properties\": {\n \"rollingUpdate\": {\n \"description\": \"Rolling update config params. Present only if DeploymentStrategyType =\\nRollingUpdate.\\n---\\nTODO: Update this to follow our convention for oneOf, whatever we decide it\\nto be.\",\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be scheduled above the desired number of\\npods.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nThis can not be 0 if MaxUnavailable is 0.\\nAbsolute number is calculated from percentage by rounding up.\\nDefaults to 25%.\\nExample: when this is set to 30%, the new ReplicaSet can be scaled up immediately when\\nthe rolling update starts, such that the total number of old and new pods do not exceed\\n130% of desired pods. Once old pods have been killed,\\nnew ReplicaSet can be scaled up further, ensuring that total number of pods running\\nat any time during the update is at most 130% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be unavailable during the update.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nAbsolute number is calculated from percentage by rounding down.\\nThis can not be 0 if MaxSurge is 0.\\nDefaults to 25%.\\nExample: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods\\nimmediately when the rolling update starts. Once new pods are ready, old ReplicaSet\\ncan be scaled down further, followed by scaling up the new ReplicaSet, ensuring\\nthat the total number of pods available at all times during the update is at\\nleast 70% of desired pods.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of deployment. Can be \\\"Recreate\\\" or \\\"RollingUpdate\\\". Default is RollingUpdate.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"elasticsearchRef\": {\n \"description\": \"ElasticsearchRef is a reference to an Elasticsearch cluster running in the same Kubernetes cluster.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Image is the Beat Docker image to deploy. Version and Type have to match the Beat in the image.\",\n \"type\": \"string\"\n },\n \"kibanaRef\": {\n \"description\": \"KibanaRef is a reference to a Kibana instance running in the same Kubernetes cluster.\\nIt allows automatic setup of dashboards and visualizations.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"monitoring\": {\n \"description\": \"Monitoring enables you to collect and ship logs and metrics for this Beat.\\nMetricbeat and/or Filebeat sidecars are configured and send monitoring data to an\\nElasticsearch monitoring cluster running in the same Kubernetes cluster.\",\n \"properties\": {\n \"logs\": {\n \"description\": \"Logs holds references to Elasticsearch clusters which receive log data from an associated resource.\",\n \"properties\": {\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs is a reference to a list of monitoring Elasticsearch clusters running in the same Kubernetes cluster.\\nDue to existing limitations, only a single Elasticsearch cluster is currently supported.\",\n \"items\": {\n \"description\": \"ObjectSelector defines a reference to a Kubernetes object which can be an Elastic resource managed by the operator\\nor a Secret describing an external Elastic resource not managed by the operator.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metrics\": {\n \"description\": \"Metrics holds references to Elasticsearch clusters which receive monitoring data from this resource.\",\n \"properties\": {\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs is a reference to a list of monitoring Elasticsearch clusters running in the same Kubernetes cluster.\\nDue to existing limitations, only a single Elasticsearch cluster is currently supported.\",\n \"items\": {\n \"description\": \"ObjectSelector defines a reference to a Kubernetes object which can be an Elastic resource managed by the operator\\nor a Secret describing an external Elastic resource not managed by the operator.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"revisionHistoryLimit\": {\n \"description\": \"RevisionHistoryLimit is the number of revisions to retain to allow rollback in the underlying DaemonSet or Deployment.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"secureSettings\": {\n \"description\": \"SecureSettings is a list of references to Kubernetes Secrets containing sensitive configuration options for the Beat.\\nSecrets data can be then referenced in the Beat config using the Secret's keys or as specified in `Entries` field of\\neach SecureSetting.\",\n \"items\": {\n \"description\": \"SecretSource defines a data source based on a Kubernetes Secret.\",\n \"properties\": {\n \"entries\": {\n \"description\": \"Entries define how to project each key-value pair in the secret to filesystem paths.\\nIf not defined, all keys will be projected to similarly named paths in the filesystem.\\nIf defined, only the specified keys will be projected to the corresponding paths.\",\n \"items\": {\n \"description\": \"KeyToPath defines how to map a key in a Secret object to a filesystem path.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key contained in the secret.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the relative file path to map the key to.\\nPath must not be an absolute file path and must not contain any \\\"..\\\" components.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is used to check access from the current resource to Elasticsearch resource in a different namespace.\\nCan only be used if ECK is enforcing RBAC on references.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is the type of the Beat to deploy (filebeat, metricbeat, heartbeat, auditbeat, journalbeat, packetbeat, and so on).\\nAny string can be used, but well-known types will have the image field defaulted and have the appropriate\\nElasticsearch roles created automatically. It also allows for dashboard setup when combined with a `KibanaRef`.\",\n \"maxLength\": 20,\n \"pattern\": \"[a-zA-Z0-9-]+\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"Version of the Beat.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"version\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Beat\",\n \"type\": \"object\"\n}",
+ "version": "beat.k8s.elastic.co/v1beta1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Beat",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/ElasticMapsServer.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/ElasticMapsServer.json
new file mode 100644
index 00000000000..b1113a3d47d
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/ElasticMapsServer.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ElasticMapsServer",
+ "schema": "{\n \"description\": \"ElasticMapsServer represents an Elastic Map Server resource in a Kubernetes cluster.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"MapsSpec holds the specification of an Elastic Maps Server instance.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config holds the ElasticMapsServer configuration. See: https://www.elastic.co/guide/en/kibana/current/maps-connect-to-ems.html#elastic-maps-server-configuration\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configRef\": {\n \"description\": \"ConfigRef contains a reference to an existing Kubernetes Secret holding the Elastic Maps Server configuration.\\nConfiguration settings are merged and have precedence over settings specified in `config`.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"count\": {\n \"description\": \"Count of Elastic Maps Server instances to deploy.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"elasticsearchRef\": {\n \"description\": \"ElasticsearchRef is a reference to an Elasticsearch cluster running in the same Kubernetes cluster.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"http\": {\n \"description\": \"HTTP holds the HTTP layer configuration for Elastic Maps Server.\",\n \"properties\": {\n \"service\": {\n \"description\": \"Service defines the template for the associated Kubernetes Service object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"ObjectMeta is the metadata of the service.\\nThe name and namespace provided here are managed by ECK and will be ignored.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec is the specification of the service.\",\n \"properties\": {\n \"allocateLoadBalancerNodePorts\": {\n \"description\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\",\n \"type\": \"boolean\"\n },\n \"clusterIP\": {\n \"description\": \"clusterIP is the IP address of the service and is usually assigned\\nrandomly. If an address is specified manually, is in-range (as per\\nsystem configuration), and is not in use, it will be allocated to the\\nservice; otherwise creation of the service will fail. This field may not\\nbe changed through updates unless the type field is also being changed\\nto ExternalName (which requires this field to be blank) or the type\\nfield is being changed from ExternalName (in which case this field may\\noptionally be specified, as describe above). Valid values are \\\"None\\\",\\nempty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a\\n\\\"headless service\\\" (no virtual IP), which is useful when direct endpoint\\nconnections are preferred and proxying is not required. Only applies to\\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\\nwhen creating a Service of type ExternalName, creation will fail. This\\nfield will be wiped when updating a Service to type ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"clusterIPs\": {\n \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\\nThese IPs must correspond to the values of the ipFamilies field. Both\\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalIPs\": {\n \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster\\nwill also accept traffic for this service. These IPs are not managed by\\nKubernetes. The user is responsible for ensuring that traffic arrives\\nat a node with this IP. A common example is external load-balancers\\nthat are not part of the Kubernetes system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalName\": {\n \"description\": \"externalName is the external reference that discovery mechanisms will\\nreturn as an alias for this service (e.g. a DNS CNAME record). No\\nproxying will be involved. Must be a lowercase RFC-1123 hostname\\n(https://tools.ietf.org/html/rfc1123) and requires `type` to be \\\"ExternalName\\\".\",\n \"type\": \"string\"\n },\n \"externalTrafficPolicy\": {\n \"description\": \"externalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts,\\nExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure\\nthe service in a way that assumes that external load balancers will take care\\nof balancing the service traffic between nodes, and so each node will deliver\\ntraffic only to the node-local endpoints of the service, without masquerading\\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\\nbe dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of\\nrouting to all endpoints evenly (possibly modified by topology and other\\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\\nwithin the cluster will always get \\\"Cluster\\\" semantics, but clients sending to\\na NodePort from within the cluster may need to take traffic policy into account\\nwhen picking a node.\",\n \"type\": \"string\"\n },\n \"healthCheckNodePort\": {\n \"description\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\nThis field cannot be updated once set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"internalTrafficPolicy\": {\n \"description\": \"InternalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods\\nonly want to talk to endpoints of the service on the same node as the pod,\\ndropping the traffic if there are no local endpoints. The default value,\\n\\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly\\n(possibly modified by topology and other features).\",\n \"type\": \"string\"\n },\n \"ipFamilies\": {\n \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice. This field is usually assigned automatically based on cluster\\nconfiguration and the ipFamilyPolicy field. If this field is specified\\nmanually, the requested family is available in the cluster,\\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\\nthe service will fail. This field is conditionally mutable: it allows\\nfor adding or removing a secondary IP family, but it does not allow\\nchanging the primary IP family of the Service. Valid values are \\\"IPv4\\\"\\nand \\\"IPv6\\\". This field only applies to Services of types ClusterIP,\\nNodePort, and LoadBalancer, and does apply to \\\"headless\\\" services.\\nThis field will be wiped when updating a Service to type ExternalName.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\",\n \"items\": {\n \"description\": \"IPFamily represents the IP Family (IPv4 or IPv6). This type is used\\nto express the family of an IP expressed by a type (e.g. service.spec.ipFamilies).\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ipFamilyPolicy\": {\n \"description\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service. If there is no value provided, then this field will be set\\nto SingleStack. Services can be \\\"SingleStack\\\" (a single IP family),\\n\\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or\\na single IP family on single-stack clusters), or \\\"RequireDualStack\\\"\\n(two IP families on dual-stack configured clusters, otherwise fail). The\\nipFamilies and clusterIPs fields depend on the value of this field. This\\nfield will be wiped when updating a service to type ExternalName.\",\n \"type\": \"string\"\n },\n \"loadBalancerClass\": {\n \"description\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\",\n \"type\": \"string\"\n },\n \"loadBalancerIP\": {\n \"description\": \"Only applies to Service Type: LoadBalancer.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\nDeprecated: This field was under-specified and its meaning varies across implementations.\\nUsing it is non-portable and it may not support dual-stack.\\nUsers are encouraged to use implementation-specific annotations when available.\",\n \"type\": \"string\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"If specified and supported by the platform, this will restrict traffic through the cloud-provider\\nload-balancer will be restricted to the specified client IPs. This field will be ignored if the\\ncloud-provider does not support the feature.\\\"\\nMore info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ports\": {\n \"description\": \"The list of ports that are exposed by this service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"description\": \"ServicePort contains information on service's port.\",\n \"properties\": {\n \"appProtocol\": {\n \"description\": \"The application protocol for this port.\\nThis is used as a hint for implementations to offer richer behavior for protocols that they understand.\\nThis field follows standard Kubernetes label syntax.\\nValid values are either:\\n\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per\\nRFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n\\n* Kubernetes-defined prefixed names:\\n * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n\\n* Other protocols should use implementation-defined prefixed names such as\\nmycompany.com/my-custom-protocol.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of this port within the service. This must be a DNS_LABEL.\\nAll ports within a ServiceSpec must have unique names. When considering\\nthe endpoints for a Service, this must match the 'name' field in the\\nEndpointPort.\\nOptional if only one ServicePort is defined on this service.\",\n \"type\": \"string\"\n },\n \"nodePort\": {\n \"description\": \"The port on each node on which this service is exposed when type is\\nNodePort or LoadBalancer. Usually assigned by the system. If a value is\\nspecified, in-range, and not in use it will be used, otherwise the\\noperation will fail. If not specified, a port will be allocated if this\\nService requires one. If this field is specified when creating a\\nService which does not need it, creation will fail. This field will be\\nwiped when updating a Service to no longer need it (e.g. changing type\\nfrom NodePort to ClusterIP).\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"port\": {\n \"description\": \"The port that will be exposed by this service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\".\\nDefault is TCP.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the pods targeted by the service.\\nNumber must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\\nIf this is a string, it will be looked up as a named port in the\\ntarget Pod's container ports. If this is not specified, the value\\nof the 'port' field is used (an identity map).\\nThis field is ignored for services with clusterIP=None, and should be\\nomitted or set equal to the 'port' field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"port\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishNotReadyAddresses\": {\n \"description\": \"publishNotReadyAddresses indicates that any agent which deals with endpoints for this\\nService should disregard any indications of ready/not-ready.\\nThe primary use case for setting this field is for a StatefulSet's Headless Service to\\npropagate SRV DNS records for its Pods for the purpose of peer discovery.\\nThe Kubernetes controllers that generate Endpoints and EndpointSlice resources for\\nServices interpret this to mean that all endpoints are considered \\\"ready\\\" even if the\\nPods themselves are not. Agents which consume only Kubernetes generated endpoints\\nthrough the Endpoints or EndpointSlice resources can safely assume this behavior.\",\n \"type\": \"boolean\"\n },\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Route service traffic to pods with label keys and values matching this\\nselector. If empty or not present, the service is assumed to have an\\nexternal process managing its endpoints, which Kubernetes will not\\nmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.\\nIgnored if type is ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sessionAffinity\": {\n \"description\": \"Supports \\\"ClientIP\\\" and \\\"None\\\". Used to maintain session affinity.\\nEnable client IP based session affinity.\\nMust be ClientIP or None.\\nDefaults to None.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"sessionAffinityConfig\": {\n \"description\": \"sessionAffinityConfig contains the configurations of session affinity.\",\n \"properties\": {\n \"clientIP\": {\n \"description\": \"clientIP contains the configurations of Client IP based session affinity.\",\n \"properties\": {\n \"timeoutSeconds\": {\n \"description\": \"timeoutSeconds specifies the seconds of ClientIP type session sticky time.\\nThe value must be \\u003e0 \\u0026\\u0026 \\u003c=86400(for 1 day) if ServiceAffinity == \\\"ClientIP\\\".\\nDefault value is 10800(for 3 hours).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"trafficDistribution\": {\n \"description\": \"TrafficDistribution offers a way to express preferences for how traffic is\\ndistributed to Service endpoints. Implementations can use this field as a\\nhint, but are not required to guarantee strict adherence. If the field is\\nnot set, the implementation will apply its default routing strategy. If set\\nto \\\"PreferClose\\\", implementations should prioritize endpoints that are\\ntopologically close (e.g., same zone).\\nThis is an alpha field and requires enabling ServiceTrafficDistribution feature.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type determines how the Service is exposed. Defaults to ClusterIP. Valid\\noptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.\\n\\\"ClusterIP\\\" allocates a cluster-internal IP address for load-balancing\\nto endpoints. Endpoints are determined by the selector or if that is not\\nspecified, by manual construction of an Endpoints object or\\nEndpointSlice objects. If clusterIP is \\\"None\\\", no virtual IP is\\nallocated and the endpoints are published as a set of endpoints rather\\nthan a virtual IP.\\n\\\"NodePort\\\" builds on ClusterIP and allocates a port on every node which\\nroutes to the same endpoints as the clusterIP.\\n\\\"LoadBalancer\\\" builds on NodePort and creates an external load-balancer\\n(if supported in the current cloud) which routes to the same endpoints\\nas the clusterIP.\\n\\\"ExternalName\\\" aliases this service to the specified externalName.\\nSeveral other fields do not apply to ExternalName services.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS defines options for configuring TLS for HTTP.\",\n \"properties\": {\n \"certificate\": {\n \"description\": \"Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS.\\nThe referenced secret should contain the following:\\n\\n\\n- `ca.crt`: The certificate authority (optional).\\n- `tls.crt`: The certificate (or a chain).\\n- `tls.key`: The private key to the first certificate in the certificate chain.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selfSignedCertificate\": {\n \"description\": \"SelfSignedCertificate allows configuring the self-signed certificate generated by the operator.\",\n \"properties\": {\n \"disabled\": {\n \"description\": \"Disabled indicates that the provisioning of the self-signed certifcate should be disabled.\",\n \"type\": \"boolean\"\n },\n \"subjectAltNames\": {\n \"description\": \"SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate.\",\n \"items\": {\n \"description\": \"SubjectAlternativeName represents a SAN entry in a x509 certificate.\",\n \"properties\": {\n \"dns\": {\n \"description\": \"DNS is the DNS name of the subject.\",\n \"type\": \"string\"\n },\n \"ip\": {\n \"description\": \"IP is the IP address of the subject.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Image is the Elastic Maps Server Docker image to deploy.\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the Elastic Maps Server pods\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"revisionHistoryLimit\": {\n \"description\": \"RevisionHistoryLimit is the number of revisions to retain to allow rollback in the underlying Deployment.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is used to check access from the current resource to a resource (for ex. Elasticsearch) in a different namespace.\\nCan only be used if ECK is enforcing RBAC on references.\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"Version of Elastic Maps Server.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"version\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Elastic Maps Server\",\n \"type\": \"object\"\n}",
+ "version": "maps.k8s.elastic.co/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Elastic Maps Server",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Elasticsearch.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Elasticsearch.json
new file mode 100644
index 00000000000..3d2bfdbdaf7
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Elasticsearch.json
@@ -0,0 +1,195 @@
+{
+ "capabilities": [
+ {
+ "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.",
+ "displayName": "Performance Test",
+ "entityState": [
+ "instance"
+ ],
+ "key": "",
+ "kind": "action",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "perf-test",
+ "type": "operator",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the workload specific setting of a component",
+ "displayName": "Workload Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "config",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure Labels And Annotations for the component ",
+ "displayName": "Labels and Annotations Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "labels-and-annotations",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View relationships for the component",
+ "displayName": "Relationships",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "relationship",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View Component Definition ",
+ "displayName": "Json Schema",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "definition",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the visual styles for the component",
+ "displayName": "Styling",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Change the shape of the component",
+ "displayName": "Change Shape",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "shape",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Drag and Drop a component into a parent component in graph view",
+ "displayName": "Compound Drag And Drop",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "interaction",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "compoundDnd",
+ "type": "graph",
+ "version": "0.7.0"
+ }
+ ],
+ "component": {
+ "kind": "Elasticsearch",
+ "schema": "{\n \"description\": \"Elasticsearch represents an Elasticsearch resource in a Kubernetes cluster.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ElasticsearchSpec holds the specification of an Elasticsearch cluster.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Auth contains user authentication and authorization security settings for Elasticsearch.\",\n \"properties\": {\n \"disableElasticUser\": {\n \"description\": \"DisableElasticUser disables the default elastic user that is created by ECK.\",\n \"type\": \"boolean\"\n },\n \"fileRealm\": {\n \"description\": \"FileRealm to propagate to the Elasticsearch cluster.\",\n \"items\": {\n \"description\": \"FileRealmSource references users to create in the Elasticsearch cluster.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"roles\": {\n \"description\": \"Roles to propagate to the Elasticsearch cluster.\",\n \"items\": {\n \"description\": \"RoleSource references roles to create in the Elasticsearch cluster.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"http\": {\n \"description\": \"HTTP holds HTTP layer settings for Elasticsearch.\",\n \"properties\": {\n \"service\": {\n \"description\": \"Service defines the template for the associated Kubernetes Service object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"ObjectMeta is the metadata of the service.\\nThe name and namespace provided here are managed by ECK and will be ignored.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec is the specification of the service.\",\n \"properties\": {\n \"allocateLoadBalancerNodePorts\": {\n \"description\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\",\n \"type\": \"boolean\"\n },\n \"clusterIP\": {\n \"description\": \"clusterIP is the IP address of the service and is usually assigned\\nrandomly. If an address is specified manually, is in-range (as per\\nsystem configuration), and is not in use, it will be allocated to the\\nservice; otherwise creation of the service will fail. This field may not\\nbe changed through updates unless the type field is also being changed\\nto ExternalName (which requires this field to be blank) or the type\\nfield is being changed from ExternalName (in which case this field may\\noptionally be specified, as describe above). Valid values are \\\"None\\\",\\nempty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a\\n\\\"headless service\\\" (no virtual IP), which is useful when direct endpoint\\nconnections are preferred and proxying is not required. Only applies to\\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\\nwhen creating a Service of type ExternalName, creation will fail. This\\nfield will be wiped when updating a Service to type ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"clusterIPs\": {\n \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\\nThese IPs must correspond to the values of the ipFamilies field. Both\\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalIPs\": {\n \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster\\nwill also accept traffic for this service. These IPs are not managed by\\nKubernetes. The user is responsible for ensuring that traffic arrives\\nat a node with this IP. A common example is external load-balancers\\nthat are not part of the Kubernetes system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalName\": {\n \"description\": \"externalName is the external reference that discovery mechanisms will\\nreturn as an alias for this service (e.g. a DNS CNAME record). No\\nproxying will be involved. Must be a lowercase RFC-1123 hostname\\n(https://tools.ietf.org/html/rfc1123) and requires `type` to be \\\"ExternalName\\\".\",\n \"type\": \"string\"\n },\n \"externalTrafficPolicy\": {\n \"description\": \"externalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts,\\nExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure\\nthe service in a way that assumes that external load balancers will take care\\nof balancing the service traffic between nodes, and so each node will deliver\\ntraffic only to the node-local endpoints of the service, without masquerading\\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\\nbe dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of\\nrouting to all endpoints evenly (possibly modified by topology and other\\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\\nwithin the cluster will always get \\\"Cluster\\\" semantics, but clients sending to\\na NodePort from within the cluster may need to take traffic policy into account\\nwhen picking a node.\",\n \"type\": \"string\"\n },\n \"healthCheckNodePort\": {\n \"description\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\nThis field cannot be updated once set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"internalTrafficPolicy\": {\n \"description\": \"InternalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods\\nonly want to talk to endpoints of the service on the same node as the pod,\\ndropping the traffic if there are no local endpoints. The default value,\\n\\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly\\n(possibly modified by topology and other features).\",\n \"type\": \"string\"\n },\n \"ipFamilies\": {\n \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice. This field is usually assigned automatically based on cluster\\nconfiguration and the ipFamilyPolicy field. If this field is specified\\nmanually, the requested family is available in the cluster,\\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\\nthe service will fail. This field is conditionally mutable: it allows\\nfor adding or removing a secondary IP family, but it does not allow\\nchanging the primary IP family of the Service. Valid values are \\\"IPv4\\\"\\nand \\\"IPv6\\\". This field only applies to Services of types ClusterIP,\\nNodePort, and LoadBalancer, and does apply to \\\"headless\\\" services.\\nThis field will be wiped when updating a Service to type ExternalName.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\",\n \"items\": {\n \"description\": \"IPFamily represents the IP Family (IPv4 or IPv6). This type is used\\nto express the family of an IP expressed by a type (e.g. service.spec.ipFamilies).\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ipFamilyPolicy\": {\n \"description\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service. If there is no value provided, then this field will be set\\nto SingleStack. Services can be \\\"SingleStack\\\" (a single IP family),\\n\\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or\\na single IP family on single-stack clusters), or \\\"RequireDualStack\\\"\\n(two IP families on dual-stack configured clusters, otherwise fail). The\\nipFamilies and clusterIPs fields depend on the value of this field. This\\nfield will be wiped when updating a service to type ExternalName.\",\n \"type\": \"string\"\n },\n \"loadBalancerClass\": {\n \"description\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\",\n \"type\": \"string\"\n },\n \"loadBalancerIP\": {\n \"description\": \"Only applies to Service Type: LoadBalancer.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\nDeprecated: This field was under-specified and its meaning varies across implementations.\\nUsing it is non-portable and it may not support dual-stack.\\nUsers are encouraged to use implementation-specific annotations when available.\",\n \"type\": \"string\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"If specified and supported by the platform, this will restrict traffic through the cloud-provider\\nload-balancer will be restricted to the specified client IPs. This field will be ignored if the\\ncloud-provider does not support the feature.\\\"\\nMore info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ports\": {\n \"description\": \"The list of ports that are exposed by this service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"description\": \"ServicePort contains information on service's port.\",\n \"properties\": {\n \"appProtocol\": {\n \"description\": \"The application protocol for this port.\\nThis is used as a hint for implementations to offer richer behavior for protocols that they understand.\\nThis field follows standard Kubernetes label syntax.\\nValid values are either:\\n\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per\\nRFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n\\n* Kubernetes-defined prefixed names:\\n * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n\\n* Other protocols should use implementation-defined prefixed names such as\\nmycompany.com/my-custom-protocol.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of this port within the service. This must be a DNS_LABEL.\\nAll ports within a ServiceSpec must have unique names. When considering\\nthe endpoints for a Service, this must match the 'name' field in the\\nEndpointPort.\\nOptional if only one ServicePort is defined on this service.\",\n \"type\": \"string\"\n },\n \"nodePort\": {\n \"description\": \"The port on each node on which this service is exposed when type is\\nNodePort or LoadBalancer. Usually assigned by the system. If a value is\\nspecified, in-range, and not in use it will be used, otherwise the\\noperation will fail. If not specified, a port will be allocated if this\\nService requires one. If this field is specified when creating a\\nService which does not need it, creation will fail. This field will be\\nwiped when updating a Service to no longer need it (e.g. changing type\\nfrom NodePort to ClusterIP).\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"port\": {\n \"description\": \"The port that will be exposed by this service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\".\\nDefault is TCP.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the pods targeted by the service.\\nNumber must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\\nIf this is a string, it will be looked up as a named port in the\\ntarget Pod's container ports. If this is not specified, the value\\nof the 'port' field is used (an identity map).\\nThis field is ignored for services with clusterIP=None, and should be\\nomitted or set equal to the 'port' field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"port\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishNotReadyAddresses\": {\n \"description\": \"publishNotReadyAddresses indicates that any agent which deals with endpoints for this\\nService should disregard any indications of ready/not-ready.\\nThe primary use case for setting this field is for a StatefulSet's Headless Service to\\npropagate SRV DNS records for its Pods for the purpose of peer discovery.\\nThe Kubernetes controllers that generate Endpoints and EndpointSlice resources for\\nServices interpret this to mean that all endpoints are considered \\\"ready\\\" even if the\\nPods themselves are not. Agents which consume only Kubernetes generated endpoints\\nthrough the Endpoints or EndpointSlice resources can safely assume this behavior.\",\n \"type\": \"boolean\"\n },\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Route service traffic to pods with label keys and values matching this\\nselector. If empty or not present, the service is assumed to have an\\nexternal process managing its endpoints, which Kubernetes will not\\nmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.\\nIgnored if type is ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sessionAffinity\": {\n \"description\": \"Supports \\\"ClientIP\\\" and \\\"None\\\". Used to maintain session affinity.\\nEnable client IP based session affinity.\\nMust be ClientIP or None.\\nDefaults to None.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"sessionAffinityConfig\": {\n \"description\": \"sessionAffinityConfig contains the configurations of session affinity.\",\n \"properties\": {\n \"clientIP\": {\n \"description\": \"clientIP contains the configurations of Client IP based session affinity.\",\n \"properties\": {\n \"timeoutSeconds\": {\n \"description\": \"timeoutSeconds specifies the seconds of ClientIP type session sticky time.\\nThe value must be \\u003e0 \\u0026\\u0026 \\u003c=86400(for 1 day) if ServiceAffinity == \\\"ClientIP\\\".\\nDefault value is 10800(for 3 hours).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"trafficDistribution\": {\n \"description\": \"TrafficDistribution offers a way to express preferences for how traffic is\\ndistributed to Service endpoints. Implementations can use this field as a\\nhint, but are not required to guarantee strict adherence. If the field is\\nnot set, the implementation will apply its default routing strategy. If set\\nto \\\"PreferClose\\\", implementations should prioritize endpoints that are\\ntopologically close (e.g., same zone).\\nThis is an alpha field and requires enabling ServiceTrafficDistribution feature.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type determines how the Service is exposed. Defaults to ClusterIP. Valid\\noptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.\\n\\\"ClusterIP\\\" allocates a cluster-internal IP address for load-balancing\\nto endpoints. Endpoints are determined by the selector or if that is not\\nspecified, by manual construction of an Endpoints object or\\nEndpointSlice objects. If clusterIP is \\\"None\\\", no virtual IP is\\nallocated and the endpoints are published as a set of endpoints rather\\nthan a virtual IP.\\n\\\"NodePort\\\" builds on ClusterIP and allocates a port on every node which\\nroutes to the same endpoints as the clusterIP.\\n\\\"LoadBalancer\\\" builds on NodePort and creates an external load-balancer\\n(if supported in the current cloud) which routes to the same endpoints\\nas the clusterIP.\\n\\\"ExternalName\\\" aliases this service to the specified externalName.\\nSeveral other fields do not apply to ExternalName services.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS defines options for configuring TLS for HTTP.\",\n \"properties\": {\n \"certificate\": {\n \"description\": \"Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS.\\nThe referenced secret should contain the following:\\n\\n\\n- `ca.crt`: The certificate authority (optional).\\n- `tls.crt`: The certificate (or a chain).\\n- `tls.key`: The private key to the first certificate in the certificate chain.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selfSignedCertificate\": {\n \"description\": \"SelfSignedCertificate allows configuring the self-signed certificate generated by the operator.\",\n \"properties\": {\n \"disabled\": {\n \"description\": \"Disabled indicates that the provisioning of the self-signed certifcate should be disabled.\",\n \"type\": \"boolean\"\n },\n \"subjectAltNames\": {\n \"description\": \"SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate.\",\n \"items\": {\n \"description\": \"SubjectAlternativeName represents a SAN entry in a x509 certificate.\",\n \"properties\": {\n \"dns\": {\n \"description\": \"DNS is the DNS name of the subject.\",\n \"type\": \"string\"\n },\n \"ip\": {\n \"description\": \"IP is the IP address of the subject.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Image is the Elasticsearch Docker image to deploy.\",\n \"type\": \"string\"\n },\n \"monitoring\": {\n \"description\": \"Monitoring enables you to collect and ship log and monitoring data of this Elasticsearch cluster.\\nSee https://www.elastic.co/guide/en/elasticsearch/reference/current/monitor-elasticsearch-cluster.html.\\nMetricbeat and Filebeat are deployed in the same Pod as sidecars and each one sends data to one or two different\\nElasticsearch monitoring clusters running in the same Kubernetes cluster.\",\n \"properties\": {\n \"logs\": {\n \"description\": \"Logs holds references to Elasticsearch clusters which receive log data from an associated resource.\",\n \"properties\": {\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs is a reference to a list of monitoring Elasticsearch clusters running in the same Kubernetes cluster.\\nDue to existing limitations, only a single Elasticsearch cluster is currently supported.\",\n \"items\": {\n \"description\": \"ObjectSelector defines a reference to a Kubernetes object which can be an Elastic resource managed by the operator\\nor a Secret describing an external Elastic resource not managed by the operator.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metrics\": {\n \"description\": \"Metrics holds references to Elasticsearch clusters which receive monitoring data from this resource.\",\n \"properties\": {\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs is a reference to a list of monitoring Elasticsearch clusters running in the same Kubernetes cluster.\\nDue to existing limitations, only a single Elasticsearch cluster is currently supported.\",\n \"items\": {\n \"description\": \"ObjectSelector defines a reference to a Kubernetes object which can be an Elastic resource managed by the operator\\nor a Secret describing an external Elastic resource not managed by the operator.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nodeSets\": {\n \"description\": \"NodeSets allow specifying groups of Elasticsearch nodes sharing the same configuration and Pod templates.\",\n \"items\": {\n \"description\": \"NodeSet is the specification for a group of Elasticsearch nodes sharing the same configuration and a Pod template.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config holds the Elasticsearch configuration.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"count\": {\n \"description\": \"Count of Elasticsearch nodes to deploy.\\nIf the node set is managed by an autoscaling policy the initial value is automatically set by the autoscaling controller.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Name of this set of nodes. Becomes a part of the Elasticsearch node.name setting.\",\n \"maxLength\": 23,\n \"pattern\": \"[a-zA-Z0-9-]+\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the Pods belonging to this NodeSet.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"volumeClaimTemplates\": {\n \"description\": \"VolumeClaimTemplates is a list of persistent volume claims to be used by each Pod in this NodeSet.\\nEvery claim in this list must have a matching volumeMount in one of the containers defined in the PodTemplate.\\nItems defined here take precedence over any default claims added by the operator with the same name.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaim is a user's request for and claim to a persistent volume\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"podDisruptionBudget\": {\n \"description\": \"PodDisruptionBudget provides access to the default Pod disruption budget for the Elasticsearch cluster.\\nThe default budget doesn't allow any Pod to be removed in case the cluster is not green or if there is only one node of type `data` or `master`.\\nIn all other cases the default PodDisruptionBudget sets `minUnavailable` equal to the total number of nodes minus 1.\\nTo disable, set `PodDisruptionBudget` to the empty value (`{}` in YAML).\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"ObjectMeta is the metadata of the PDB.\\nThe name and namespace provided here are managed by ECK and will be ignored.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec is the specification of the PDB.\",\n \"properties\": {\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at most \\\"maxUnavailable\\\" pods selected by\\n\\\"selector\\\" are unavailable after the eviction, i.e. even in absence of\\nthe evicted pod. For example, one can prevent all voluntary evictions\\nby specifying 0. This is a mutually exclusive setting with \\\"minAvailable\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"minAvailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"An eviction is allowed if at least \\\"minAvailable\\\" pods selected by\\n\\\"selector\\\" will still be available after the eviction, i.e. even in the\\nabsence of the evicted pod. So for example you can prevent all voluntary\\nevictions by specifying \\\"100%\\\".\",\n \"x-kubernetes-int-or-string\": true\n },\n \"selector\": {\n \"description\": \"Label query over pods whose evictions are managed by the disruption\\nbudget.\\nA null selector will match no pods, while an empty ({}) selector will select\\nall pods within the namespace.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"unhealthyPodEvictionPolicy\": {\n \"description\": \"UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods\\nshould be considered for eviction. Current implementation considers healthy pods,\\nas pods that have status.conditions item with type=\\\"Ready\\\",status=\\\"True\\\".\\n\\n\\nValid policies are IfHealthyBudget and AlwaysAllow.\\nIf no policy is specified, the default behavior will be used,\\nwhich corresponds to the IfHealthyBudget policy.\\n\\n\\nIfHealthyBudget policy means that running pods (status.phase=\\\"Running\\\"),\\nbut not yet healthy can be evicted only if the guarded application is not\\ndisrupted (status.currentHealthy is at least equal to status.desiredHealthy).\\nHealthy pods will be subject to the PDB for eviction.\\n\\n\\nAlwaysAllow policy means that all running pods (status.phase=\\\"Running\\\"),\\nbut not yet healthy are considered disrupted and can be evicted regardless\\nof whether the criteria in a PDB is met. This means perspective running\\npods of a disrupted application might not get a chance to become healthy.\\nHealthy pods will be subject to the PDB for eviction.\\n\\n\\nAdditional policies may be added in the future.\\nClients making eviction decisions should disallow eviction of unhealthy pods\\nif they encounter an unrecognized policy in this field.\\n\\n\\nThis field is beta-level. The eviction API uses this field when\\nthe feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default).\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"remoteClusters\": {\n \"description\": \"RemoteClusters enables you to establish uni-directional connections to a remote Elasticsearch cluster.\",\n \"items\": {\n \"description\": \"RemoteCluster declares a remote Elasticsearch cluster connection.\",\n \"properties\": {\n \"elasticsearchRef\": {\n \"description\": \"ElasticsearchRef is a reference to an Elasticsearch cluster running within the same k8s cluster.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name is the name of the remote cluster as it is set in the Elasticsearch settings.\\nThe name is expected to be unique for each remote clusters.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"revisionHistoryLimit\": {\n \"description\": \"RevisionHistoryLimit is the number of revisions to retain to allow rollback in the underlying StatefulSets.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"secureSettings\": {\n \"description\": \"SecureSettings is a list of references to Kubernetes secrets containing sensitive configuration options for Elasticsearch.\",\n \"items\": {\n \"description\": \"SecretSource defines a data source based on a Kubernetes Secret.\",\n \"properties\": {\n \"entries\": {\n \"description\": \"Entries define how to project each key-value pair in the secret to filesystem paths.\\nIf not defined, all keys will be projected to similarly named paths in the filesystem.\\nIf defined, only the specified keys will be projected to the corresponding paths.\",\n \"items\": {\n \"description\": \"KeyToPath defines how to map a key in a Secret object to a filesystem path.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key contained in the secret.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the relative file path to map the key to.\\nPath must not be an absolute file path and must not contain any \\\"..\\\" components.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is used to check access from the current resource to a resource (for ex. a remote Elasticsearch cluster) in a different namespace.\\nCan only be used if ECK is enforcing RBAC on references.\",\n \"type\": \"string\"\n },\n \"transport\": {\n \"description\": \"Transport holds transport layer settings for Elasticsearch.\",\n \"properties\": {\n \"service\": {\n \"description\": \"Service defines the template for the associated Kubernetes Service object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"ObjectMeta is the metadata of the service.\\nThe name and namespace provided here are managed by ECK and will be ignored.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec is the specification of the service.\",\n \"properties\": {\n \"allocateLoadBalancerNodePorts\": {\n \"description\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\",\n \"type\": \"boolean\"\n },\n \"clusterIP\": {\n \"description\": \"clusterIP is the IP address of the service and is usually assigned\\nrandomly. If an address is specified manually, is in-range (as per\\nsystem configuration), and is not in use, it will be allocated to the\\nservice; otherwise creation of the service will fail. This field may not\\nbe changed through updates unless the type field is also being changed\\nto ExternalName (which requires this field to be blank) or the type\\nfield is being changed from ExternalName (in which case this field may\\noptionally be specified, as describe above). Valid values are \\\"None\\\",\\nempty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a\\n\\\"headless service\\\" (no virtual IP), which is useful when direct endpoint\\nconnections are preferred and proxying is not required. Only applies to\\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\\nwhen creating a Service of type ExternalName, creation will fail. This\\nfield will be wiped when updating a Service to type ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"clusterIPs\": {\n \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\\nThese IPs must correspond to the values of the ipFamilies field. Both\\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalIPs\": {\n \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster\\nwill also accept traffic for this service. These IPs are not managed by\\nKubernetes. The user is responsible for ensuring that traffic arrives\\nat a node with this IP. A common example is external load-balancers\\nthat are not part of the Kubernetes system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalName\": {\n \"description\": \"externalName is the external reference that discovery mechanisms will\\nreturn as an alias for this service (e.g. a DNS CNAME record). No\\nproxying will be involved. Must be a lowercase RFC-1123 hostname\\n(https://tools.ietf.org/html/rfc1123) and requires `type` to be \\\"ExternalName\\\".\",\n \"type\": \"string\"\n },\n \"externalTrafficPolicy\": {\n \"description\": \"externalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts,\\nExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure\\nthe service in a way that assumes that external load balancers will take care\\nof balancing the service traffic between nodes, and so each node will deliver\\ntraffic only to the node-local endpoints of the service, without masquerading\\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\\nbe dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of\\nrouting to all endpoints evenly (possibly modified by topology and other\\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\\nwithin the cluster will always get \\\"Cluster\\\" semantics, but clients sending to\\na NodePort from within the cluster may need to take traffic policy into account\\nwhen picking a node.\",\n \"type\": \"string\"\n },\n \"healthCheckNodePort\": {\n \"description\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\nThis field cannot be updated once set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"internalTrafficPolicy\": {\n \"description\": \"InternalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods\\nonly want to talk to endpoints of the service on the same node as the pod,\\ndropping the traffic if there are no local endpoints. The default value,\\n\\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly\\n(possibly modified by topology and other features).\",\n \"type\": \"string\"\n },\n \"ipFamilies\": {\n \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice. This field is usually assigned automatically based on cluster\\nconfiguration and the ipFamilyPolicy field. If this field is specified\\nmanually, the requested family is available in the cluster,\\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\\nthe service will fail. This field is conditionally mutable: it allows\\nfor adding or removing a secondary IP family, but it does not allow\\nchanging the primary IP family of the Service. Valid values are \\\"IPv4\\\"\\nand \\\"IPv6\\\". This field only applies to Services of types ClusterIP,\\nNodePort, and LoadBalancer, and does apply to \\\"headless\\\" services.\\nThis field will be wiped when updating a Service to type ExternalName.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\",\n \"items\": {\n \"description\": \"IPFamily represents the IP Family (IPv4 or IPv6). This type is used\\nto express the family of an IP expressed by a type (e.g. service.spec.ipFamilies).\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ipFamilyPolicy\": {\n \"description\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service. If there is no value provided, then this field will be set\\nto SingleStack. Services can be \\\"SingleStack\\\" (a single IP family),\\n\\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or\\na single IP family on single-stack clusters), or \\\"RequireDualStack\\\"\\n(two IP families on dual-stack configured clusters, otherwise fail). The\\nipFamilies and clusterIPs fields depend on the value of this field. This\\nfield will be wiped when updating a service to type ExternalName.\",\n \"type\": \"string\"\n },\n \"loadBalancerClass\": {\n \"description\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\",\n \"type\": \"string\"\n },\n \"loadBalancerIP\": {\n \"description\": \"Only applies to Service Type: LoadBalancer.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\nDeprecated: This field was under-specified and its meaning varies across implementations.\\nUsing it is non-portable and it may not support dual-stack.\\nUsers are encouraged to use implementation-specific annotations when available.\",\n \"type\": \"string\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"If specified and supported by the platform, this will restrict traffic through the cloud-provider\\nload-balancer will be restricted to the specified client IPs. This field will be ignored if the\\ncloud-provider does not support the feature.\\\"\\nMore info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ports\": {\n \"description\": \"The list of ports that are exposed by this service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"description\": \"ServicePort contains information on service's port.\",\n \"properties\": {\n \"appProtocol\": {\n \"description\": \"The application protocol for this port.\\nThis is used as a hint for implementations to offer richer behavior for protocols that they understand.\\nThis field follows standard Kubernetes label syntax.\\nValid values are either:\\n\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per\\nRFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n\\n* Kubernetes-defined prefixed names:\\n * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n\\n* Other protocols should use implementation-defined prefixed names such as\\nmycompany.com/my-custom-protocol.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of this port within the service. This must be a DNS_LABEL.\\nAll ports within a ServiceSpec must have unique names. When considering\\nthe endpoints for a Service, this must match the 'name' field in the\\nEndpointPort.\\nOptional if only one ServicePort is defined on this service.\",\n \"type\": \"string\"\n },\n \"nodePort\": {\n \"description\": \"The port on each node on which this service is exposed when type is\\nNodePort or LoadBalancer. Usually assigned by the system. If a value is\\nspecified, in-range, and not in use it will be used, otherwise the\\noperation will fail. If not specified, a port will be allocated if this\\nService requires one. If this field is specified when creating a\\nService which does not need it, creation will fail. This field will be\\nwiped when updating a Service to no longer need it (e.g. changing type\\nfrom NodePort to ClusterIP).\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"port\": {\n \"description\": \"The port that will be exposed by this service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\".\\nDefault is TCP.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the pods targeted by the service.\\nNumber must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\\nIf this is a string, it will be looked up as a named port in the\\ntarget Pod's container ports. If this is not specified, the value\\nof the 'port' field is used (an identity map).\\nThis field is ignored for services with clusterIP=None, and should be\\nomitted or set equal to the 'port' field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"port\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishNotReadyAddresses\": {\n \"description\": \"publishNotReadyAddresses indicates that any agent which deals with endpoints for this\\nService should disregard any indications of ready/not-ready.\\nThe primary use case for setting this field is for a StatefulSet's Headless Service to\\npropagate SRV DNS records for its Pods for the purpose of peer discovery.\\nThe Kubernetes controllers that generate Endpoints and EndpointSlice resources for\\nServices interpret this to mean that all endpoints are considered \\\"ready\\\" even if the\\nPods themselves are not. Agents which consume only Kubernetes generated endpoints\\nthrough the Endpoints or EndpointSlice resources can safely assume this behavior.\",\n \"type\": \"boolean\"\n },\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Route service traffic to pods with label keys and values matching this\\nselector. If empty or not present, the service is assumed to have an\\nexternal process managing its endpoints, which Kubernetes will not\\nmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.\\nIgnored if type is ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sessionAffinity\": {\n \"description\": \"Supports \\\"ClientIP\\\" and \\\"None\\\". Used to maintain session affinity.\\nEnable client IP based session affinity.\\nMust be ClientIP or None.\\nDefaults to None.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"sessionAffinityConfig\": {\n \"description\": \"sessionAffinityConfig contains the configurations of session affinity.\",\n \"properties\": {\n \"clientIP\": {\n \"description\": \"clientIP contains the configurations of Client IP based session affinity.\",\n \"properties\": {\n \"timeoutSeconds\": {\n \"description\": \"timeoutSeconds specifies the seconds of ClientIP type session sticky time.\\nThe value must be \\u003e0 \\u0026\\u0026 \\u003c=86400(for 1 day) if ServiceAffinity == \\\"ClientIP\\\".\\nDefault value is 10800(for 3 hours).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"trafficDistribution\": {\n \"description\": \"TrafficDistribution offers a way to express preferences for how traffic is\\ndistributed to Service endpoints. Implementations can use this field as a\\nhint, but are not required to guarantee strict adherence. If the field is\\nnot set, the implementation will apply its default routing strategy. If set\\nto \\\"PreferClose\\\", implementations should prioritize endpoints that are\\ntopologically close (e.g., same zone).\\nThis is an alpha field and requires enabling ServiceTrafficDistribution feature.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type determines how the Service is exposed. Defaults to ClusterIP. Valid\\noptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.\\n\\\"ClusterIP\\\" allocates a cluster-internal IP address for load-balancing\\nto endpoints. Endpoints are determined by the selector or if that is not\\nspecified, by manual construction of an Endpoints object or\\nEndpointSlice objects. If clusterIP is \\\"None\\\", no virtual IP is\\nallocated and the endpoints are published as a set of endpoints rather\\nthan a virtual IP.\\n\\\"NodePort\\\" builds on ClusterIP and allocates a port on every node which\\nroutes to the same endpoints as the clusterIP.\\n\\\"LoadBalancer\\\" builds on NodePort and creates an external load-balancer\\n(if supported in the current cloud) which routes to the same endpoints\\nas the clusterIP.\\n\\\"ExternalName\\\" aliases this service to the specified externalName.\\nSeveral other fields do not apply to ExternalName services.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS defines options for configuring TLS on the transport layer.\",\n \"properties\": {\n \"certificate\": {\n \"description\": \"Certificate is a reference to a Kubernetes secret that contains the CA certificate\\nand private key for generating node certificates.\\nThe referenced secret should contain the following:\\n\\n\\n- `ca.crt`: The CA certificate in PEM format.\\n- `ca.key`: The private key for the CA certificate in PEM format.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"certificateAuthorities\": {\n \"description\": \"CertificateAuthorities is a reference to a config map that contains one or more x509 certificates for\\ntrusted authorities in PEM format. The certificates need to be in a file called `ca.crt`.\",\n \"properties\": {\n \"configMapName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"otherNameSuffix\": {\n \"description\": \"OtherNameSuffix when defined will be prefixed with the Pod name and used as the common name,\\nand the first DNSName, as well as an OtherName required by Elasticsearch in the Subject Alternative Name\\nextension of each Elasticsearch node's transport TLS certificate.\\nExample: if set to \\\"node.cluster.local\\\", the generated certificate will have its otherName set to \\\"\\u003cpod_name\\u003e.node.cluster.local\\\".\",\n \"type\": \"string\"\n },\n \"selfSignedCertificates\": {\n \"description\": \"SelfSignedCertificates allows configuring the self-signed certificate generated by the operator.\",\n \"properties\": {\n \"disabled\": {\n \"description\": \"Disabled indicates that provisioning of the self-signed certificates should be disabled.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"subjectAltNames\": {\n \"description\": \"SubjectAlternativeNames is a list of SANs to include in the generated node transport TLS certificates.\",\n \"items\": {\n \"description\": \"SubjectAlternativeName represents a SAN entry in a x509 certificate.\",\n \"properties\": {\n \"dns\": {\n \"description\": \"DNS is the DNS name of the subject.\",\n \"type\": \"string\"\n },\n \"ip\": {\n \"description\": \"IP is the IP address of the subject.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"updateStrategy\": {\n \"description\": \"UpdateStrategy specifies how updates to the cluster should be performed.\",\n \"properties\": {\n \"changeBudget\": {\n \"description\": \"ChangeBudget defines the constraints to consider when applying changes to the Elasticsearch cluster.\",\n \"properties\": {\n \"maxSurge\": {\n \"description\": \"MaxSurge is the maximum number of new Pods that can be created exceeding the original number of Pods defined in\\nthe specification. MaxSurge is only taken into consideration when scaling up. Setting a negative value will\\ndisable the restriction. Defaults to unbounded if not specified.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxUnavailable\": {\n \"description\": \"MaxUnavailable is the maximum number of Pods that can be unavailable (not ready) during the update due to\\ncircumstances under the control of the operator. Setting a negative value will disable this restriction.\\nDefaults to 1 if not specified.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"version\": {\n \"description\": \"Version of Elasticsearch.\",\n \"type\": \"string\"\n },\n \"volumeClaimDeletePolicy\": {\n \"description\": \"VolumeClaimDeletePolicy sets the policy for handling deletion of PersistentVolumeClaims for all NodeSets.\\nPossible values are DeleteOnScaledownOnly and DeleteOnScaledownAndClusterDeletion. Defaults to DeleteOnScaledownAndClusterDeletion.\",\n \"enum\": [\n \"DeleteOnScaledownOnly\",\n \"DeleteOnScaledownAndClusterDeletion\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"nodeSets\",\n \"version\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Elasticsearch\",\n \"type\": \"object\"\n}",
+ "version": "elasticsearch.k8s.elastic.co/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Elasticsearch",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/ElasticsearchAutoscaler.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/ElasticsearchAutoscaler.json
new file mode 100644
index 00000000000..1d7134019c8
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/ElasticsearchAutoscaler.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "ElasticsearchAutoscaler",
+ "schema": "{\n \"description\": \"ElasticsearchAutoscaler represents an ElasticsearchAutoscaler resource in a Kubernetes cluster.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"ElasticsearchAutoscalerSpec holds the specification of an Elasticsearch autoscaler resource.\",\n \"properties\": {\n \"elasticsearchRef\": {\n \"description\": \"ElasticsearchRef is a reference to an Elasticsearch cluster that exists in the same namespace.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the Elasticsearch resource to scale automatically.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"policies\": {\n \"items\": {\n \"description\": \"AutoscalingPolicySpec holds a named autoscaling policy and the associated resources limits (cpu, memory, storage).\",\n \"properties\": {\n \"deciders\": {\n \"additionalProperties\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"DeciderSettings allow the user to tweak autoscaling deciders.\\nThe map data structure complies with the \\u003ckey,value\\u003e format expected by Elasticsearch.\",\n \"type\": \"object\"\n },\n \"description\": \"Deciders allow the user to override default settings for autoscaling deciders.\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name identifies the autoscaling policy in the autoscaling specification.\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"AutoscalingResources model the limits, submitted by the user, for the supported resources in an autoscaling policy.\\nOnly the node count range is mandatory. For other resources, a limit range is required only\\nif the Elasticsearch autoscaling capacity API returns a requirement for a given resource.\\nFor example, the memory limit range is only required if the autoscaling API response contains a memory requirement.\\nIf there is no limit range for a resource, and if that resource is not mandatory, then the resources in the NodeSets\\nmanaged by the autoscaling policy are left untouched.\",\n \"properties\": {\n \"cpu\": {\n \"description\": \"QuantityRange models a resource limit range for resources which can be expressed with resource.Quantity.\",\n \"properties\": {\n \"max\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Max represents the upper limit for the resources managed by the autoscaler.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"min\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Min represents the lower limit for the resources managed by the autoscaler.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestsToLimitsRatio\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"RequestsToLimitsRatio allows to customize Kubernetes resource Limit based on the Request.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"max\",\n \"min\"\n ],\n \"type\": \"object\"\n },\n \"memory\": {\n \"description\": \"QuantityRange models a resource limit range for resources which can be expressed with resource.Quantity.\",\n \"properties\": {\n \"max\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Max represents the upper limit for the resources managed by the autoscaler.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"min\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Min represents the lower limit for the resources managed by the autoscaler.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestsToLimitsRatio\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"RequestsToLimitsRatio allows to customize Kubernetes resource Limit based on the Request.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"max\",\n \"min\"\n ],\n \"type\": \"object\"\n },\n \"nodeCount\": {\n \"description\": \"NodeCountRange is used to model the minimum and the maximum number of nodes over all the NodeSets managed by the same autoscaling policy.\",\n \"properties\": {\n \"max\": {\n \"description\": \"Max represents the maximum number of nodes in a tier.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"min\": {\n \"description\": \"Min represents the minimum number of nodes in a tier.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"max\",\n \"min\"\n ],\n \"type\": \"object\"\n },\n \"storage\": {\n \"description\": \"QuantityRange models a resource limit range for resources which can be expressed with resource.Quantity.\",\n \"properties\": {\n \"max\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Max represents the upper limit for the resources managed by the autoscaler.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"min\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Min represents the lower limit for the resources managed by the autoscaler.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"requestsToLimitsRatio\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"RequestsToLimitsRatio allows to customize Kubernetes resource Limit based on the Request.\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"max\",\n \"min\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"nodeCount\"\n ],\n \"type\": \"object\"\n },\n \"roles\": {\n \"description\": \"An autoscaling policy must target a unique set of roles.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"resources\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"pollingPeriod\": {\n \"description\": \"PollingPeriod is the period at which to synchronize with the Elasticsearch autoscaling API.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"policies\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Elasticsearch Autoscaler\",\n \"type\": \"object\"\n}",
+ "version": "autoscaling.k8s.elastic.co/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Elasticsearch Autoscaler",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/EnterpriseSearch.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/EnterpriseSearch.json
new file mode 100644
index 00000000000..0eebff17a47
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/EnterpriseSearch.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "EnterpriseSearch",
+ "schema": "{\n \"description\": \"EnterpriseSearch is a Kubernetes CRD to represent Enterprise Search.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"EnterpriseSearchSpec holds the specification of an Enterprise Search resource.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config holds the Enterprise Search configuration.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configRef\": {\n \"description\": \"ConfigRef contains a reference to an existing Kubernetes Secret holding the Enterprise Search configuration.\\nConfiguration settings are merged and have precedence over settings specified in `config`.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"count\": {\n \"description\": \"Count of Enterprise Search instances to deploy.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"elasticsearchRef\": {\n \"description\": \"ElasticsearchRef is a reference to the Elasticsearch cluster running in the same Kubernetes cluster.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"http\": {\n \"description\": \"HTTP holds the HTTP layer configuration for Enterprise Search resource.\",\n \"properties\": {\n \"service\": {\n \"description\": \"Service defines the template for the associated Kubernetes Service object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"ObjectMeta is the metadata of the service.\\nThe name and namespace provided here are managed by ECK and will be ignored.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec is the specification of the service.\",\n \"properties\": {\n \"allocateLoadBalancerNodePorts\": {\n \"description\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\",\n \"type\": \"boolean\"\n },\n \"clusterIP\": {\n \"description\": \"clusterIP is the IP address of the service and is usually assigned\\nrandomly. If an address is specified manually, is in-range (as per\\nsystem configuration), and is not in use, it will be allocated to the\\nservice; otherwise creation of the service will fail. This field may not\\nbe changed through updates unless the type field is also being changed\\nto ExternalName (which requires this field to be blank) or the type\\nfield is being changed from ExternalName (in which case this field may\\noptionally be specified, as describe above). Valid values are \\\"None\\\",\\nempty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a\\n\\\"headless service\\\" (no virtual IP), which is useful when direct endpoint\\nconnections are preferred and proxying is not required. Only applies to\\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\\nwhen creating a Service of type ExternalName, creation will fail. This\\nfield will be wiped when updating a Service to type ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"clusterIPs\": {\n \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\\nThese IPs must correspond to the values of the ipFamilies field. Both\\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalIPs\": {\n \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster\\nwill also accept traffic for this service. These IPs are not managed by\\nKubernetes. The user is responsible for ensuring that traffic arrives\\nat a node with this IP. A common example is external load-balancers\\nthat are not part of the Kubernetes system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalName\": {\n \"description\": \"externalName is the external reference that discovery mechanisms will\\nreturn as an alias for this service (e.g. a DNS CNAME record). No\\nproxying will be involved. Must be a lowercase RFC-1123 hostname\\n(https://tools.ietf.org/html/rfc1123) and requires `type` to be \\\"ExternalName\\\".\",\n \"type\": \"string\"\n },\n \"externalTrafficPolicy\": {\n \"description\": \"externalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts,\\nExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure\\nthe service in a way that assumes that external load balancers will take care\\nof balancing the service traffic between nodes, and so each node will deliver\\ntraffic only to the node-local endpoints of the service, without masquerading\\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\\nbe dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of\\nrouting to all endpoints evenly (possibly modified by topology and other\\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\\nwithin the cluster will always get \\\"Cluster\\\" semantics, but clients sending to\\na NodePort from within the cluster may need to take traffic policy into account\\nwhen picking a node.\",\n \"type\": \"string\"\n },\n \"healthCheckNodePort\": {\n \"description\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\nThis field cannot be updated once set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"internalTrafficPolicy\": {\n \"description\": \"InternalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods\\nonly want to talk to endpoints of the service on the same node as the pod,\\ndropping the traffic if there are no local endpoints. The default value,\\n\\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly\\n(possibly modified by topology and other features).\",\n \"type\": \"string\"\n },\n \"ipFamilies\": {\n \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice. This field is usually assigned automatically based on cluster\\nconfiguration and the ipFamilyPolicy field. If this field is specified\\nmanually, the requested family is available in the cluster,\\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\\nthe service will fail. This field is conditionally mutable: it allows\\nfor adding or removing a secondary IP family, but it does not allow\\nchanging the primary IP family of the Service. Valid values are \\\"IPv4\\\"\\nand \\\"IPv6\\\". This field only applies to Services of types ClusterIP,\\nNodePort, and LoadBalancer, and does apply to \\\"headless\\\" services.\\nThis field will be wiped when updating a Service to type ExternalName.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\",\n \"items\": {\n \"description\": \"IPFamily represents the IP Family (IPv4 or IPv6). This type is used\\nto express the family of an IP expressed by a type (e.g. service.spec.ipFamilies).\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ipFamilyPolicy\": {\n \"description\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service. If there is no value provided, then this field will be set\\nto SingleStack. Services can be \\\"SingleStack\\\" (a single IP family),\\n\\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or\\na single IP family on single-stack clusters), or \\\"RequireDualStack\\\"\\n(two IP families on dual-stack configured clusters, otherwise fail). The\\nipFamilies and clusterIPs fields depend on the value of this field. This\\nfield will be wiped when updating a service to type ExternalName.\",\n \"type\": \"string\"\n },\n \"loadBalancerClass\": {\n \"description\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\",\n \"type\": \"string\"\n },\n \"loadBalancerIP\": {\n \"description\": \"Only applies to Service Type: LoadBalancer.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\nDeprecated: This field was under-specified and its meaning varies across implementations.\\nUsing it is non-portable and it may not support dual-stack.\\nUsers are encouraged to use implementation-specific annotations when available.\",\n \"type\": \"string\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"If specified and supported by the platform, this will restrict traffic through the cloud-provider\\nload-balancer will be restricted to the specified client IPs. This field will be ignored if the\\ncloud-provider does not support the feature.\\\"\\nMore info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ports\": {\n \"description\": \"The list of ports that are exposed by this service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"description\": \"ServicePort contains information on service's port.\",\n \"properties\": {\n \"appProtocol\": {\n \"description\": \"The application protocol for this port.\\nThis is used as a hint for implementations to offer richer behavior for protocols that they understand.\\nThis field follows standard Kubernetes label syntax.\\nValid values are either:\\n\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per\\nRFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n\\n* Kubernetes-defined prefixed names:\\n * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n\\n* Other protocols should use implementation-defined prefixed names such as\\nmycompany.com/my-custom-protocol.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of this port within the service. This must be a DNS_LABEL.\\nAll ports within a ServiceSpec must have unique names. When considering\\nthe endpoints for a Service, this must match the 'name' field in the\\nEndpointPort.\\nOptional if only one ServicePort is defined on this service.\",\n \"type\": \"string\"\n },\n \"nodePort\": {\n \"description\": \"The port on each node on which this service is exposed when type is\\nNodePort or LoadBalancer. Usually assigned by the system. If a value is\\nspecified, in-range, and not in use it will be used, otherwise the\\noperation will fail. If not specified, a port will be allocated if this\\nService requires one. If this field is specified when creating a\\nService which does not need it, creation will fail. This field will be\\nwiped when updating a Service to no longer need it (e.g. changing type\\nfrom NodePort to ClusterIP).\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"port\": {\n \"description\": \"The port that will be exposed by this service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\".\\nDefault is TCP.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the pods targeted by the service.\\nNumber must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\\nIf this is a string, it will be looked up as a named port in the\\ntarget Pod's container ports. If this is not specified, the value\\nof the 'port' field is used (an identity map).\\nThis field is ignored for services with clusterIP=None, and should be\\nomitted or set equal to the 'port' field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"port\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishNotReadyAddresses\": {\n \"description\": \"publishNotReadyAddresses indicates that any agent which deals with endpoints for this\\nService should disregard any indications of ready/not-ready.\\nThe primary use case for setting this field is for a StatefulSet's Headless Service to\\npropagate SRV DNS records for its Pods for the purpose of peer discovery.\\nThe Kubernetes controllers that generate Endpoints and EndpointSlice resources for\\nServices interpret this to mean that all endpoints are considered \\\"ready\\\" even if the\\nPods themselves are not. Agents which consume only Kubernetes generated endpoints\\nthrough the Endpoints or EndpointSlice resources can safely assume this behavior.\",\n \"type\": \"boolean\"\n },\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Route service traffic to pods with label keys and values matching this\\nselector. If empty or not present, the service is assumed to have an\\nexternal process managing its endpoints, which Kubernetes will not\\nmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.\\nIgnored if type is ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sessionAffinity\": {\n \"description\": \"Supports \\\"ClientIP\\\" and \\\"None\\\". Used to maintain session affinity.\\nEnable client IP based session affinity.\\nMust be ClientIP or None.\\nDefaults to None.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"sessionAffinityConfig\": {\n \"description\": \"sessionAffinityConfig contains the configurations of session affinity.\",\n \"properties\": {\n \"clientIP\": {\n \"description\": \"clientIP contains the configurations of Client IP based session affinity.\",\n \"properties\": {\n \"timeoutSeconds\": {\n \"description\": \"timeoutSeconds specifies the seconds of ClientIP type session sticky time.\\nThe value must be \\u003e0 \\u0026\\u0026 \\u003c=86400(for 1 day) if ServiceAffinity == \\\"ClientIP\\\".\\nDefault value is 10800(for 3 hours).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"trafficDistribution\": {\n \"description\": \"TrafficDistribution offers a way to express preferences for how traffic is\\ndistributed to Service endpoints. Implementations can use this field as a\\nhint, but are not required to guarantee strict adherence. If the field is\\nnot set, the implementation will apply its default routing strategy. If set\\nto \\\"PreferClose\\\", implementations should prioritize endpoints that are\\ntopologically close (e.g., same zone).\\nThis is an alpha field and requires enabling ServiceTrafficDistribution feature.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type determines how the Service is exposed. Defaults to ClusterIP. Valid\\noptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.\\n\\\"ClusterIP\\\" allocates a cluster-internal IP address for load-balancing\\nto endpoints. Endpoints are determined by the selector or if that is not\\nspecified, by manual construction of an Endpoints object or\\nEndpointSlice objects. If clusterIP is \\\"None\\\", no virtual IP is\\nallocated and the endpoints are published as a set of endpoints rather\\nthan a virtual IP.\\n\\\"NodePort\\\" builds on ClusterIP and allocates a port on every node which\\nroutes to the same endpoints as the clusterIP.\\n\\\"LoadBalancer\\\" builds on NodePort and creates an external load-balancer\\n(if supported in the current cloud) which routes to the same endpoints\\nas the clusterIP.\\n\\\"ExternalName\\\" aliases this service to the specified externalName.\\nSeveral other fields do not apply to ExternalName services.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS defines options for configuring TLS for HTTP.\",\n \"properties\": {\n \"certificate\": {\n \"description\": \"Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS.\\nThe referenced secret should contain the following:\\n\\n\\n- `ca.crt`: The certificate authority (optional).\\n- `tls.crt`: The certificate (or a chain).\\n- `tls.key`: The private key to the first certificate in the certificate chain.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selfSignedCertificate\": {\n \"description\": \"SelfSignedCertificate allows configuring the self-signed certificate generated by the operator.\",\n \"properties\": {\n \"disabled\": {\n \"description\": \"Disabled indicates that the provisioning of the self-signed certifcate should be disabled.\",\n \"type\": \"boolean\"\n },\n \"subjectAltNames\": {\n \"description\": \"SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate.\",\n \"items\": {\n \"description\": \"SubjectAlternativeName represents a SAN entry in a x509 certificate.\",\n \"properties\": {\n \"dns\": {\n \"description\": \"DNS is the DNS name of the subject.\",\n \"type\": \"string\"\n },\n \"ip\": {\n \"description\": \"IP is the IP address of the subject.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Image is the Enterprise Search Docker image to deploy.\",\n \"type\": \"string\"\n },\n \"podTemplate\": {\n \"description\": \"PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on)\\nfor the Enterprise Search pods.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"revisionHistoryLimit\": {\n \"description\": \"RevisionHistoryLimit is the number of revisions to retain to allow rollback in the underlying Deployment.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is used to check access from the current resource to a resource (for ex. Elasticsearch) in a different namespace.\\nCan only be used if ECK is enforcing RBAC on references.\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"Version of Enterprise Search.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Enterprise Search\",\n \"type\": \"object\"\n}",
+ "version": "enterprisesearch.k8s.elastic.co/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Enterprise Search",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Kibana.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Kibana.json
new file mode 100644
index 00000000000..aa4bde570a7
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Kibana.json
@@ -0,0 +1,195 @@
+{
+ "capabilities": [
+ {
+ "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.",
+ "displayName": "Performance Test",
+ "entityState": [
+ "instance"
+ ],
+ "key": "",
+ "kind": "action",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "perf-test",
+ "type": "operator",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the workload specific setting of a component",
+ "displayName": "Workload Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "config",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure Labels And Annotations for the component ",
+ "displayName": "Labels and Annotations Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "labels-and-annotations",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View relationships for the component",
+ "displayName": "Relationships",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "relationship",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View Component Definition ",
+ "displayName": "Json Schema",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "definition",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the visual styles for the component",
+ "displayName": "Styling",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Change the shape of the component",
+ "displayName": "Change Shape",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "shape",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Drag and Drop a component into a parent component in graph view",
+ "displayName": "Compound Drag And Drop",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "interaction",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "compoundDnd",
+ "type": "graph",
+ "version": "0.7.0"
+ }
+ ],
+ "component": {
+ "kind": "Kibana",
+ "schema": "{\n \"description\": \"Kibana represents a Kibana resource in a Kubernetes cluster.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"KibanaSpec holds the specification of a Kibana instance.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config holds the Kibana configuration. See: https://www.elastic.co/guide/en/kibana/current/settings.html\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"count\": {\n \"description\": \"Count of Kibana instances to deploy.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"elasticsearchRef\": {\n \"description\": \"ElasticsearchRef is a reference to an Elasticsearch cluster running in the same Kubernetes cluster.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"enterpriseSearchRef\": {\n \"description\": \"EnterpriseSearchRef is a reference to an EnterpriseSearch running in the same Kubernetes cluster.\\nKibana provides the default Enterprise Search UI starting version 7.14.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"http\": {\n \"description\": \"HTTP holds the HTTP layer configuration for Kibana.\",\n \"properties\": {\n \"service\": {\n \"description\": \"Service defines the template for the associated Kubernetes Service object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"ObjectMeta is the metadata of the service.\\nThe name and namespace provided here are managed by ECK and will be ignored.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec is the specification of the service.\",\n \"properties\": {\n \"allocateLoadBalancerNodePorts\": {\n \"description\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\",\n \"type\": \"boolean\"\n },\n \"clusterIP\": {\n \"description\": \"clusterIP is the IP address of the service and is usually assigned\\nrandomly. If an address is specified manually, is in-range (as per\\nsystem configuration), and is not in use, it will be allocated to the\\nservice; otherwise creation of the service will fail. This field may not\\nbe changed through updates unless the type field is also being changed\\nto ExternalName (which requires this field to be blank) or the type\\nfield is being changed from ExternalName (in which case this field may\\noptionally be specified, as describe above). Valid values are \\\"None\\\",\\nempty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a\\n\\\"headless service\\\" (no virtual IP), which is useful when direct endpoint\\nconnections are preferred and proxying is not required. Only applies to\\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\\nwhen creating a Service of type ExternalName, creation will fail. This\\nfield will be wiped when updating a Service to type ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"clusterIPs\": {\n \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\\nThese IPs must correspond to the values of the ipFamilies field. Both\\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalIPs\": {\n \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster\\nwill also accept traffic for this service. These IPs are not managed by\\nKubernetes. The user is responsible for ensuring that traffic arrives\\nat a node with this IP. A common example is external load-balancers\\nthat are not part of the Kubernetes system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalName\": {\n \"description\": \"externalName is the external reference that discovery mechanisms will\\nreturn as an alias for this service (e.g. a DNS CNAME record). No\\nproxying will be involved. Must be a lowercase RFC-1123 hostname\\n(https://tools.ietf.org/html/rfc1123) and requires `type` to be \\\"ExternalName\\\".\",\n \"type\": \"string\"\n },\n \"externalTrafficPolicy\": {\n \"description\": \"externalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts,\\nExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure\\nthe service in a way that assumes that external load balancers will take care\\nof balancing the service traffic between nodes, and so each node will deliver\\ntraffic only to the node-local endpoints of the service, without masquerading\\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\\nbe dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of\\nrouting to all endpoints evenly (possibly modified by topology and other\\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\\nwithin the cluster will always get \\\"Cluster\\\" semantics, but clients sending to\\na NodePort from within the cluster may need to take traffic policy into account\\nwhen picking a node.\",\n \"type\": \"string\"\n },\n \"healthCheckNodePort\": {\n \"description\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\nThis field cannot be updated once set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"internalTrafficPolicy\": {\n \"description\": \"InternalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods\\nonly want to talk to endpoints of the service on the same node as the pod,\\ndropping the traffic if there are no local endpoints. The default value,\\n\\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly\\n(possibly modified by topology and other features).\",\n \"type\": \"string\"\n },\n \"ipFamilies\": {\n \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice. This field is usually assigned automatically based on cluster\\nconfiguration and the ipFamilyPolicy field. If this field is specified\\nmanually, the requested family is available in the cluster,\\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\\nthe service will fail. This field is conditionally mutable: it allows\\nfor adding or removing a secondary IP family, but it does not allow\\nchanging the primary IP family of the Service. Valid values are \\\"IPv4\\\"\\nand \\\"IPv6\\\". This field only applies to Services of types ClusterIP,\\nNodePort, and LoadBalancer, and does apply to \\\"headless\\\" services.\\nThis field will be wiped when updating a Service to type ExternalName.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\",\n \"items\": {\n \"description\": \"IPFamily represents the IP Family (IPv4 or IPv6). This type is used\\nto express the family of an IP expressed by a type (e.g. service.spec.ipFamilies).\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ipFamilyPolicy\": {\n \"description\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service. If there is no value provided, then this field will be set\\nto SingleStack. Services can be \\\"SingleStack\\\" (a single IP family),\\n\\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or\\na single IP family on single-stack clusters), or \\\"RequireDualStack\\\"\\n(two IP families on dual-stack configured clusters, otherwise fail). The\\nipFamilies and clusterIPs fields depend on the value of this field. This\\nfield will be wiped when updating a service to type ExternalName.\",\n \"type\": \"string\"\n },\n \"loadBalancerClass\": {\n \"description\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\",\n \"type\": \"string\"\n },\n \"loadBalancerIP\": {\n \"description\": \"Only applies to Service Type: LoadBalancer.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\nDeprecated: This field was under-specified and its meaning varies across implementations.\\nUsing it is non-portable and it may not support dual-stack.\\nUsers are encouraged to use implementation-specific annotations when available.\",\n \"type\": \"string\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"If specified and supported by the platform, this will restrict traffic through the cloud-provider\\nload-balancer will be restricted to the specified client IPs. This field will be ignored if the\\ncloud-provider does not support the feature.\\\"\\nMore info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ports\": {\n \"description\": \"The list of ports that are exposed by this service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"description\": \"ServicePort contains information on service's port.\",\n \"properties\": {\n \"appProtocol\": {\n \"description\": \"The application protocol for this port.\\nThis is used as a hint for implementations to offer richer behavior for protocols that they understand.\\nThis field follows standard Kubernetes label syntax.\\nValid values are either:\\n\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per\\nRFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n\\n* Kubernetes-defined prefixed names:\\n * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n\\n* Other protocols should use implementation-defined prefixed names such as\\nmycompany.com/my-custom-protocol.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of this port within the service. This must be a DNS_LABEL.\\nAll ports within a ServiceSpec must have unique names. When considering\\nthe endpoints for a Service, this must match the 'name' field in the\\nEndpointPort.\\nOptional if only one ServicePort is defined on this service.\",\n \"type\": \"string\"\n },\n \"nodePort\": {\n \"description\": \"The port on each node on which this service is exposed when type is\\nNodePort or LoadBalancer. Usually assigned by the system. If a value is\\nspecified, in-range, and not in use it will be used, otherwise the\\noperation will fail. If not specified, a port will be allocated if this\\nService requires one. If this field is specified when creating a\\nService which does not need it, creation will fail. This field will be\\nwiped when updating a Service to no longer need it (e.g. changing type\\nfrom NodePort to ClusterIP).\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"port\": {\n \"description\": \"The port that will be exposed by this service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\".\\nDefault is TCP.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the pods targeted by the service.\\nNumber must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\\nIf this is a string, it will be looked up as a named port in the\\ntarget Pod's container ports. If this is not specified, the value\\nof the 'port' field is used (an identity map).\\nThis field is ignored for services with clusterIP=None, and should be\\nomitted or set equal to the 'port' field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"port\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishNotReadyAddresses\": {\n \"description\": \"publishNotReadyAddresses indicates that any agent which deals with endpoints for this\\nService should disregard any indications of ready/not-ready.\\nThe primary use case for setting this field is for a StatefulSet's Headless Service to\\npropagate SRV DNS records for its Pods for the purpose of peer discovery.\\nThe Kubernetes controllers that generate Endpoints and EndpointSlice resources for\\nServices interpret this to mean that all endpoints are considered \\\"ready\\\" even if the\\nPods themselves are not. Agents which consume only Kubernetes generated endpoints\\nthrough the Endpoints or EndpointSlice resources can safely assume this behavior.\",\n \"type\": \"boolean\"\n },\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Route service traffic to pods with label keys and values matching this\\nselector. If empty or not present, the service is assumed to have an\\nexternal process managing its endpoints, which Kubernetes will not\\nmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.\\nIgnored if type is ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sessionAffinity\": {\n \"description\": \"Supports \\\"ClientIP\\\" and \\\"None\\\". Used to maintain session affinity.\\nEnable client IP based session affinity.\\nMust be ClientIP or None.\\nDefaults to None.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"sessionAffinityConfig\": {\n \"description\": \"sessionAffinityConfig contains the configurations of session affinity.\",\n \"properties\": {\n \"clientIP\": {\n \"description\": \"clientIP contains the configurations of Client IP based session affinity.\",\n \"properties\": {\n \"timeoutSeconds\": {\n \"description\": \"timeoutSeconds specifies the seconds of ClientIP type session sticky time.\\nThe value must be \\u003e0 \\u0026\\u0026 \\u003c=86400(for 1 day) if ServiceAffinity == \\\"ClientIP\\\".\\nDefault value is 10800(for 3 hours).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"trafficDistribution\": {\n \"description\": \"TrafficDistribution offers a way to express preferences for how traffic is\\ndistributed to Service endpoints. Implementations can use this field as a\\nhint, but are not required to guarantee strict adherence. If the field is\\nnot set, the implementation will apply its default routing strategy. If set\\nto \\\"PreferClose\\\", implementations should prioritize endpoints that are\\ntopologically close (e.g., same zone).\\nThis is an alpha field and requires enabling ServiceTrafficDistribution feature.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type determines how the Service is exposed. Defaults to ClusterIP. Valid\\noptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.\\n\\\"ClusterIP\\\" allocates a cluster-internal IP address for load-balancing\\nto endpoints. Endpoints are determined by the selector or if that is not\\nspecified, by manual construction of an Endpoints object or\\nEndpointSlice objects. If clusterIP is \\\"None\\\", no virtual IP is\\nallocated and the endpoints are published as a set of endpoints rather\\nthan a virtual IP.\\n\\\"NodePort\\\" builds on ClusterIP and allocates a port on every node which\\nroutes to the same endpoints as the clusterIP.\\n\\\"LoadBalancer\\\" builds on NodePort and creates an external load-balancer\\n(if supported in the current cloud) which routes to the same endpoints\\nas the clusterIP.\\n\\\"ExternalName\\\" aliases this service to the specified externalName.\\nSeveral other fields do not apply to ExternalName services.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS defines options for configuring TLS for HTTP.\",\n \"properties\": {\n \"certificate\": {\n \"description\": \"Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS.\\nThe referenced secret should contain the following:\\n\\n\\n- `ca.crt`: The certificate authority (optional).\\n- `tls.crt`: The certificate (or a chain).\\n- `tls.key`: The private key to the first certificate in the certificate chain.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selfSignedCertificate\": {\n \"description\": \"SelfSignedCertificate allows configuring the self-signed certificate generated by the operator.\",\n \"properties\": {\n \"disabled\": {\n \"description\": \"Disabled indicates that the provisioning of the self-signed certifcate should be disabled.\",\n \"type\": \"boolean\"\n },\n \"subjectAltNames\": {\n \"description\": \"SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate.\",\n \"items\": {\n \"description\": \"SubjectAlternativeName represents a SAN entry in a x509 certificate.\",\n \"properties\": {\n \"dns\": {\n \"description\": \"DNS is the DNS name of the subject.\",\n \"type\": \"string\"\n },\n \"ip\": {\n \"description\": \"IP is the IP address of the subject.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Image is the Kibana Docker image to deploy.\",\n \"type\": \"string\"\n },\n \"monitoring\": {\n \"description\": \"Monitoring enables you to collect and ship log and monitoring data of this Kibana.\\nSee https://www.elastic.co/guide/en/kibana/current/xpack-monitoring.html.\\nMetricbeat and Filebeat are deployed in the same Pod as sidecars and each one sends data to one or two different\\nElasticsearch monitoring clusters running in the same Kubernetes cluster.\",\n \"properties\": {\n \"logs\": {\n \"description\": \"Logs holds references to Elasticsearch clusters which receive log data from an associated resource.\",\n \"properties\": {\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs is a reference to a list of monitoring Elasticsearch clusters running in the same Kubernetes cluster.\\nDue to existing limitations, only a single Elasticsearch cluster is currently supported.\",\n \"items\": {\n \"description\": \"ObjectSelector defines a reference to a Kubernetes object which can be an Elastic resource managed by the operator\\nor a Secret describing an external Elastic resource not managed by the operator.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metrics\": {\n \"description\": \"Metrics holds references to Elasticsearch clusters which receive monitoring data from this resource.\",\n \"properties\": {\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs is a reference to a list of monitoring Elasticsearch clusters running in the same Kubernetes cluster.\\nDue to existing limitations, only a single Elasticsearch cluster is currently supported.\",\n \"items\": {\n \"description\": \"ObjectSelector defines a reference to a Kubernetes object which can be an Elastic resource managed by the operator\\nor a Secret describing an external Elastic resource not managed by the operator.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"podTemplate\": {\n \"description\": \"PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the Kibana pods\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"revisionHistoryLimit\": {\n \"description\": \"RevisionHistoryLimit is the number of revisions to retain to allow rollback in the underlying Deployment.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"secureSettings\": {\n \"description\": \"SecureSettings is a list of references to Kubernetes secrets containing sensitive configuration options for Kibana.\",\n \"items\": {\n \"description\": \"SecretSource defines a data source based on a Kubernetes Secret.\",\n \"properties\": {\n \"entries\": {\n \"description\": \"Entries define how to project each key-value pair in the secret to filesystem paths.\\nIf not defined, all keys will be projected to similarly named paths in the filesystem.\\nIf defined, only the specified keys will be projected to the corresponding paths.\",\n \"items\": {\n \"description\": \"KeyToPath defines how to map a key in a Secret object to a filesystem path.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key contained in the secret.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the relative file path to map the key to.\\nPath must not be an absolute file path and must not contain any \\\"..\\\" components.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is used to check access from the current resource to a resource (for ex. Elasticsearch) in a different namespace.\\nCan only be used if ECK is enforcing RBAC on references.\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"Version of Kibana.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"version\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Kibana\",\n \"type\": \"object\"\n}",
+ "version": "kibana.k8s.elastic.co/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Kibana",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Logstash.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Logstash.json
new file mode 100644
index 00000000000..be7927d1445
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/Logstash.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Logstash",
+ "schema": "{\n \"description\": \"Logstash is the Schema for the logstashes API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"LogstashSpec defines the desired state of Logstash\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config holds the Logstash configuration. At most one of [`Config`, `ConfigRef`] can be specified.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"configRef\": {\n \"description\": \"ConfigRef contains a reference to an existing Kubernetes Secret holding the Logstash configuration.\\nLogstash settings must be specified as yaml, under a single \\\"logstash.yml\\\" entry. At most one of [`Config`, `ConfigRef`]\\ncan be specified.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"count\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs are references to Elasticsearch clusters running in the same Kubernetes cluster.\",\n \"items\": {\n \"description\": \"ElasticsearchCluster is a named reference to an Elasticsearch cluster which can be used in a Logstash pipeline.\",\n \"properties\": {\n \"clusterName\": {\n \"description\": \"ClusterName is an alias for the cluster to be used to refer to the Elasticsearch cluster in Logstash\\nconfiguration files, and will be used to identify \\\"named clusters\\\" in Logstash\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"image\": {\n \"description\": \"Image is the Logstash Docker image to deploy. Version and Type have to match the Logstash in the image.\",\n \"type\": \"string\"\n },\n \"monitoring\": {\n \"description\": \"Monitoring enables you to collect and ship log and monitoring data of this Logstash.\\nMetricbeat and Filebeat are deployed in the same Pod as sidecars and each one sends data to one or two different\\nElasticsearch monitoring clusters running in the same Kubernetes cluster.\",\n \"properties\": {\n \"logs\": {\n \"description\": \"Logs holds references to Elasticsearch clusters which receive log data from an associated resource.\",\n \"properties\": {\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs is a reference to a list of monitoring Elasticsearch clusters running in the same Kubernetes cluster.\\nDue to existing limitations, only a single Elasticsearch cluster is currently supported.\",\n \"items\": {\n \"description\": \"ObjectSelector defines a reference to a Kubernetes object which can be an Elastic resource managed by the operator\\nor a Secret describing an external Elastic resource not managed by the operator.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"metrics\": {\n \"description\": \"Metrics holds references to Elasticsearch clusters which receive monitoring data from this resource.\",\n \"properties\": {\n \"elasticsearchRefs\": {\n \"description\": \"ElasticsearchRefs is a reference to a list of monitoring Elasticsearch clusters running in the same Kubernetes cluster.\\nDue to existing limitations, only a single Elasticsearch cluster is currently supported.\",\n \"items\": {\n \"description\": \"ObjectSelector defines a reference to a Kubernetes object which can be an Elastic resource managed by the operator\\nor a Secret describing an external Elastic resource not managed by the operator.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of an existing Kubernetes object corresponding to an Elastic resource managed by ECK.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the Kubernetes object. If empty, defaults to the current namespace.\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of an existing Kubernetes secret that contains connection information for associating an\\nElastic resource not managed by the operator. The referenced secret must contain the following:\\n- `url`: the URL to reach the Elastic resource\\n- `username`: the username of the user to be authenticated to the Elastic resource\\n- `password`: the password of the user to be authenticated to the Elastic resource\\n- `ca.crt`: the CA certificate in PEM format (optional)\\n- `api-key`: the key to authenticate against the Elastic resource instead of a username and password (supported only for `elasticsearchRefs` in AgentSpec and in BeatSpec)\\nThis field cannot be used in combination with the other fields name, namespace or serviceName.\",\n \"type\": \"string\"\n },\n \"serviceName\": {\n \"description\": \"ServiceName is the name of an existing Kubernetes service which is used to make requests to the referenced\\nobject. It has to be in the same namespace as the referenced resource. If left empty, the default HTTP service of\\nthe referenced resource is used.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"pipelines\": {\n \"description\": \"Pipelines holds the Logstash Pipelines. At most one of [`Pipelines`, `PipelinesRef`] can be specified.\",\n \"format\": \"textarea\",\n \"items\": {\n \"type\": \"object\"\n },\n \"type\": \"string\"\n },\n \"pipelinesRef\": {\n \"description\": \"PipelinesRef contains a reference to an existing Kubernetes Secret holding the Logstash Pipelines.\\nLogstash pipelines must be specified as yaml, under a single \\\"pipelines.yml\\\" entry. At most one of [`Pipelines`, `PipelinesRef`]\\ncan be specified.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"podTemplate\": {\n \"description\": \"PodTemplate provides customisation options for the Logstash pods.\",\n \"format\": \"textarea\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Specification of the desired behavior of the pod.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n \"properties\": {\n \"activeDeadlineSeconds\": {\n \"description\": \"Optional duration in seconds the pod may be active on the node relative to\\nStartTime before the system will actively try to mark it failed and kill associated containers.\\nValue must be a positive integer.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"affinity\": {\n \"description\": \"If specified, the pod's scheduling constraints\",\n \"properties\": {\n \"nodeAffinity\": {\n \"description\": \"Describes node affinity scheduling rules for the pod.\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0\\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n \"properties\": {\n \"preference\": {\n \"description\": \"A node selector term, associated with the corresponding weight.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to an update), the system\\nmay or may not try to eventually evict the pod from its node.\",\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n \"items\": {\n \"description\": \"A null or empty node selector term matches no objects. The requirements of\\nthem are ANDed.\\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"A list of node selector requirements by node's labels.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchFields\": {\n \"description\": \"A list of node selector requirements by node's fields.\",\n \"items\": {\n \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator\\nthat relates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"An array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. If the operator is Gt or Lt, the values\\narray must have a single element, which will be interpreted as an integer.\\nThis array is replaced during a strategic merge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\",\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy\\nthe anti-affinity expressions specified by this field, but it may choose\\na node that violates one or more of the expressions. The node that is\\nmost preferred is the one with the greatest sum of weights, i.e.\\nfor each node that meets all of the scheduling requirements (resource\\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\\ncompute a sum by iterating through the elements of this field and adding\\n\\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\\nnode(s) with the highest sum are the most preferred.\",\n \"items\": {\n \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n \"properties\": {\n \"podAffinityTerm\": {\n \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"weight associated with matching the corresponding podAffinityTerm,\\nin the range 1-100.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"description\": \"If the anti-affinity requirements specified by this field are not met at\\nscheduling time, the pod will not be scheduled onto the node.\\nIf the anti-affinity requirements specified by this field cease to be met\\nat some point during pod execution (e.g. due to a pod label update), the\\nsystem may or may not try to eventually evict the pod from its node.\\nWhen there are multiple elements, the lists of nodes corresponding to each\\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n \"items\": {\n \"description\": \"Defines a set of pods (namely those matching the labelSelector\\nrelative to the given namespace(s)) that this pod should be\\nco-located (affinity) or not co-located (anti-affinity) with,\\nwhere co-located is defined as running on a node whose value of\\nthe label with key \\u003ctopologyKey\\u003e matches that of any node on which\\na pod of the set of pods is running\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"A label query over a set of resources, in this case pods.\\nIf it's null, this PodAffinityTerm matches with no Pods.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"mismatchLabelKeys\": {\n \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will\\nbe taken into consideration. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\\nto select the group of existing pods which pods will be taken into consideration\\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\\npod labels will be ignored. The default value is empty.\\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"description\": \"A label query over the set of namespaces that the term applies to.\\nThe term is applied to the union of the namespaces selected by this field\\nand the ones listed in the namespaces field.\\nnull selector and null or empty namespaces list means \\\"this pod's namespace\\\".\\nAn empty selector ({}) matches all namespaces.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologyKey\": {\n \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\\nwhose value of the label with key topologyKey matches that of any node on which any of the\\nselected pods is running.\\nEmpty topologyKey is not allowed.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"automountServiceAccountToken\": {\n \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n \"type\": \"boolean\"\n },\n \"containers\": {\n \"description\": \"List of containers belonging to the pod.\\nContainers cannot currently be added or removed.\\nThere must be at least one container in a Pod.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"dnsConfig\": {\n \"description\": \"Specifies the DNS parameters of a pod.\\nParameters specified here will be merged to the generated DNS\\nconfiguration based on DNSPolicy.\",\n \"properties\": {\n \"nameservers\": {\n \"description\": \"A list of DNS name server IP addresses.\\nThis will be appended to the base nameservers generated from DNSPolicy.\\nDuplicated nameservers will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"options\": {\n \"description\": \"A list of DNS resolver options.\\nThis will be merged with the base options generated from DNSPolicy.\\nDuplicated entries will be removed. Resolution options given in Options\\nwill override those that appear in the base DNSPolicy.\",\n \"items\": {\n \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"searches\": {\n \"description\": \"A list of DNS search domains for host-name lookup.\\nThis will be appended to the base search paths generated from DNSPolicy.\\nDuplicated search paths will be removed.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"description\": \"Set DNS policy for the pod.\\nDefaults to \\\"ClusterFirst\\\".\\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\\nexplicitly to 'ClusterFirstWithHostNet'.\",\n \"type\": \"string\"\n },\n \"enableServiceLinks\": {\n \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's\\nenvironment variables, matching the syntax of Docker links.\\nOptional: Defaults to true.\",\n \"type\": \"boolean\"\n },\n \"ephemeralContainers\": {\n \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n \"items\": {\n \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\\n\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Lifecycle is not allowed for ephemeral containers.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the ephemeral container specified as a DNS_LABEL.\\nThis name must be unique among all containers, init containers and ephemeral containers.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Ports are not allowed for ephemeral containers.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\\nalready allocated to the pod.\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for the container to manage the restart behavior of each\\ncontainer within a pod.\\nThis may only be set for init containers. You cannot set this field on\\nephemeral containers.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"Probes are not allowed for ephemeral containers.\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"targetContainerName\": {\n \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\",\n \"type\": \"string\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostAliases\": {\n \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\\nfile if specified.\",\n \"items\": {\n \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n \"properties\": {\n \"hostnames\": {\n \"description\": \"Hostnames for the above IP address.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ip\": {\n \"description\": \"IP address of the host file entry.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ip\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"ip\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"hostIPC\": {\n \"description\": \"Use the host's ipc namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostNetwork\": {\n \"description\": \"Host networking requested for this pod. Use the host's network namespace.\\nIf this option is set, the ports that will be used must be specified.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"hostPID\": {\n \"description\": \"Use the host's pid namespace.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"hostUsers\": {\n \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n \"type\": \"boolean\"\n },\n \"hostname\": {\n \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\",\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n \"items\": {\n \"description\": \"LocalObjectReference contains enough information to let you locate the\\nreferenced object inside the same namespace.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"initContainers\": {\n \"description\": \"List of initialization containers belonging to the pod.\\nInit containers are executed in order prior to containers being started. If any\\ninit container fails, the pod is considered to have failed and is handled according\\nto its restartPolicy. The name for an init container or normal container must be\\nunique among all containers.\\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\\nThe resourceRequirements of an init container are taken into account during scheduling\\nby finding the highest request/limit for each resource type, and then using the max of\\nof that value or the sum of the normal containers. Limits are applied to init containers\\nin a similar fashion.\\nInit containers cannot currently be added or removed.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n \"items\": {\n \"description\": \"A single application container that you want to run within a pod.\",\n \"properties\": {\n \"args\": {\n \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"command\": {\n \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"env\": {\n \"description\": \"List of environment variables to set in the container.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvVar represents an environment variable present in a Container.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Variable references $(VAR_NAME) are expanded\\nusing the previously defined environment variables in the container and\\nany service environment variables. If a variable cannot be resolved,\\nthe reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\\n\\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\".\\nEscaped references will never be expanded, regardless of whether the variable\\nexists or not.\\nDefaults to \\\"\\\".\",\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\",\n \"properties\": {\n \"configMapKeyRef\": {\n \"description\": \"Selects a key of a ConfigMap.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key to select.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"fieldRef\": {\n \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\\u003cKEY\\u003e']`, `metadata.annotations['\\u003cKEY\\u003e']`,\\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secretKeyRef\": {\n \"description\": \"Selects a key of a secret in the pod's namespace\",\n \"properties\": {\n \"key\": {\n \"description\": \"The key of the secret to select from. Must be a valid secret key.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"envFrom\": {\n \"description\": \"List of sources to populate environment variables in the container.\\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\\nwill be reported as an event when the container is starting. When a key exists in multiple\\nsources, the value associated with the last source will take precedence.\\nValues defined by an Env with a duplicate key will take precedence.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n \"properties\": {\n \"configMapRef\": {\n \"description\": \"The ConfigMap to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the ConfigMap must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"prefix\": {\n \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The Secret to select from\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"Specify whether the Secret must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"image\": {\n \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\",\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"Image pull policy.\\nOne of Always, Never, IfNotPresent.\\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n \"type\": \"string\"\n },\n \"lifecycle\": {\n \"description\": \"Actions that the management system should take in response to container lifecycle events.\\nCannot be updated.\",\n \"properties\": {\n \"postStart\": {\n \"description\": \"PostStart is called immediately after a container is created. If the handler fails,\\nthe container is terminated and restarted according to its restart policy.\\nOther management of the container blocks until the hook completes.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"preStop\": {\n \"description\": \"PreStop is called immediately before a container is terminated due to an\\nAPI request or management event such as liveness/startup probe failure,\\npreemption, resource contention, etc. The handler is not called if the\\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\\nPreStop hook is executed. Regardless of the outcome of the handler, the\\ncontainer will eventually terminate within the Pod's termination grace\\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\\nor until the termination grace period is reached.\\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"sleep\": {\n \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\",\n \"properties\": {\n \"seconds\": {\n \"description\": \"Seconds is the number of seconds to sleep.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"seconds\"\n ],\n \"type\": \"object\"\n },\n \"tcpSocket\": {\n \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\\nfor the backward compatibility. There are no validation of this field and\\nlifecycle hooks will fail in runtime when tcp handler is specified.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"description\": \"Periodic probe of container liveness.\\nContainer will be restarted if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the container specified as a DNS_LABEL.\\nEach container in a pod must have a unique name (DNS_LABEL).\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"ContainerPort represents a network port in a single container.\",\n \"properties\": {\n \"containerPort\": {\n \"description\": \"Number of port to expose on the pod's IP address.\\nThis must be a valid port number, 0 \\u003c x \\u003c 65536.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"hostIP\": {\n \"description\": \"What host IP to bind the external port to.\",\n \"type\": \"string\"\n },\n \"hostPort\": {\n \"description\": \"Number of port to expose on the host.\\nIf specified, this must be a valid port number, 0 \\u003c x \\u003c 65536.\\nIf HostNetwork is specified, this must match ContainerPort.\\nMost containers do not need this.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\\nnamed port in a pod must have a unique name. Name for the port that can be\\nreferred to by services.\",\n \"type\": \"string\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP.\\nDefaults to \\\"TCP\\\".\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"containerPort\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"containerPort\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"readinessProbe\": {\n \"description\": \"Periodic probe of container service readiness.\\nContainer will be removed from service endpoints if the probe fails.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resizePolicy\": {\n \"description\": \"Resources resize policy for the container.\",\n \"items\": {\n \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n \"properties\": {\n \"resourceName\": {\n \"description\": \"Name of the resource to which this resource resize policy applies.\\nSupported values: cpu, memory.\",\n \"type\": \"string\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy to apply when specified resource is resized.\\nIf not specified, it defaults to NotRequired.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resourceName\",\n \"restartPolicy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resources\": {\n \"description\": \"Compute Resources required by this container.\\nCannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"properties\": {\n \"claims\": {\n \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable. It can only be set for containers.\",\n \"items\": {\n \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"restartPolicy\": {\n \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod.\\nThis field may only be set for init containers, and the only allowed value is \\\"Always\\\".\\nFor non-init containers or when this field is not specified,\\nthe restart behavior is defined by the Pod's restart policy and the container type.\\nSetting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect:\\nthis init container will be continually restarted on\\nexit until all regular containers have terminated. Once all regular\\ncontainers have completed, all init containers with restartPolicy \\\"Always\\\"\\nwill be shut down. This lifecycle differs from normal init containers and\\nis often referred to as a \\\"sidecar\\\" container. Although this init\\ncontainer still starts in the init container sequence, it does not wait\\nfor the container to complete before proceeding to the next init\\ncontainer. Instead, the next init container starts immediately after this\\ninit container is started, or after any startupProbe has successfully\\ncompleted.\",\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext defines the security options the container should be run with.\\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\",\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile\\noverrides the pod's appArmorProfile.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"capabilities\": {\n \"description\": \"The capabilities to add/drop when running containers.\\nDefaults to the default set of capabilities granted by the container runtime.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"add\": {\n \"description\": \"Added capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"drop\": {\n \"description\": \"Removed capabilities\",\n \"items\": {\n \"description\": \"Capability represent POSIX capabilities type\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"description\": \"procMount denotes the type of proc mount to use for the containers.\\nThe default is DefaultProcMount which uses the container runtime defaults for\\nreadonly paths and masked paths.\\nThis requires the ProcMountType feature flag to be enabled.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to the container.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by this container. If seccomp options are\\nprovided at both the pod \\u0026 container level, the container options\\noverride the pod options.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options from the PodSecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startupProbe\": {\n \"description\": \"StartupProbe indicates that the Pod has successfully initialized.\\nIf specified, no other probes are executed until this completes successfully.\\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\\nThis cannot be updated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"properties\": {\n \"exec\": {\n \"description\": \"Exec specifies the action to take.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command is the command line to execute inside the container, the working directory for the\\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\\na shell, you need to explicitly call out to that shell.\\nExit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\\nDefaults to 3. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"description\": \"GRPC specifies an action involving a GRPC port.\",\n \"properties\": {\n \"port\": {\n \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"description\": \"HTTPGet specifies the http request to perform.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set\\n\\\"Host\\\" in httpHeaders instead.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n \"items\": {\n \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Name or number of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"description\": \"Scheme to use for connecting to the host.\\nDefaults to HTTP.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before liveness probes are initiated.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\\nDefault to 10 seconds. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"TCPSocket specifies an action involving a TCP port.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the container.\\nNumber must be in the range 1 to 65535.\\nName must be an IANA_SVC_NAME.\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\\nvalue overrides the value provided by the pod spec.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\\nDefaults to 1 second. Minimum value is 1.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"stdin\": {\n \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this\\nis not set, reads from stdin in the container will always result in EOF.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"stdinOnce\": {\n \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by\\na single attach. When stdin is true the stdin stream will remain open across multiple attach\\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\\nat which time stdin is closed and remains closed until the container is restarted. If this\\nflag is false, a container processes that reads from stdin will never receive an EOF.\\nDefault is false\",\n \"type\": \"boolean\"\n },\n \"terminationMessagePath\": {\n \"description\": \"Optional: Path at which the file to which the container's termination message\\nwill be written is mounted into the container's filesystem.\\nMessage written is intended to be brief final status, such as an assertion failure message.\\nWill be truncated by the node if greater than 4096 bytes. The total message length across\\nall containers will be limited to 12kb.\\nDefaults to /dev/termination-log.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"terminationMessagePolicy\": {\n \"description\": \"Indicate how the termination message should be populated. File will use the contents of\\nterminationMessagePath to populate the container status message on both success and failure.\\nFallbackToLogsOnError will use the last chunk of container log output if the termination\\nmessage file is empty and the container exited with an error.\\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\\nDefaults to File.\\nCannot be updated.\",\n \"type\": \"string\"\n },\n \"tty\": {\n \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\\nDefault is false.\",\n \"type\": \"boolean\"\n },\n \"volumeDevices\": {\n \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n \"items\": {\n \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n \"properties\": {\n \"devicePath\": {\n \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"devicePath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"devicePath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumeMounts\": {\n \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\",\n \"items\": {\n \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"Path within the container at which the volume should be mounted. Must\\nnot contain ':'.\",\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"description\": \"mountPropagation determines how mounts are propagated from the host\\nto container and the other way around.\\nWhen not set, MountPropagationNone is used.\\nThis field is beta in 1.10.\\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\\n(which defaults to None).\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"This must match the Name of a Volume.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified).\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"recursiveReadOnly\": {\n \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled\\nrecursively.\\n\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\\nrecursively read-only. If this field is set to IfPossible, the mount is made\\nrecursively read-only, if it is supported by the container runtime. If this\\nfield is set to Enabled, the mount is made recursively read-only if it is\\nsupported by the container runtime, otherwise the pod will not be started and\\nan error will be generated to indicate the reason.\\n\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\\nNone (or be unspecified, which defaults to None).\\n\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n \"type\": \"string\"\n },\n \"subPath\": {\n \"description\": \"Path within the volume from which the container's volume should be mounted.\\nDefaults to \\\"\\\" (volume's root).\",\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"description\": \"Expanded path within the volume from which the container's volume should be mounted.\\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\\nDefaults to \\\"\\\" (volume's root).\\nSubPathExpr and SubPath are mutually exclusive.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"mountPath\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"workingDir\": {\n \"description\": \"Container's working directory.\\nIf not specified, the container runtime's default will be used, which\\nmight be configured in the container image.\\nCannot be updated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"nodeName\": {\n \"description\": \"NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\\nrequirements.\",\n \"type\": \"string\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node.\\nSelector which must match a node's labels for the pod to be scheduled on that node.\\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"os\": {\n \"description\": \"Specifies the OS of the containers in the pod.\\nSome pod and container fields are restricted if this is set.\\n\\n\\nIf the OS field is set to linux, the following fields must be unset:\\n-securityContext.windowsOptions\\n\\n\\nIf the OS field is set to windows, following fields must be unset:\\n- spec.hostPID\\n- spec.hostIPC\\n- spec.hostUsers\\n- spec.securityContext.appArmorProfile\\n- spec.securityContext.seLinuxOptions\\n- spec.securityContext.seccompProfile\\n- spec.securityContext.fsGroup\\n- spec.securityContext.fsGroupChangePolicy\\n- spec.securityContext.sysctls\\n- spec.shareProcessNamespace\\n- spec.securityContext.runAsUser\\n- spec.securityContext.runAsGroup\\n- spec.securityContext.supplementalGroups\\n- spec.containers[*].securityContext.appArmorProfile\\n- spec.containers[*].securityContext.seLinuxOptions\\n- spec.containers[*].securityContext.seccompProfile\\n- spec.containers[*].securityContext.capabilities\\n- spec.containers[*].securityContext.readOnlyRootFilesystem\\n- spec.containers[*].securityContext.privileged\\n- spec.containers[*].securityContext.allowPrivilegeEscalation\\n- spec.containers[*].securityContext.procMount\\n- spec.containers[*].securityContext.runAsUser\\n- spec.containers[*].securityContext.runAsGroup\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows.\\nAdditional value may be defined in future and can be one of:\\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\\nClients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"overhead\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.\\nThis field will be autopopulated at admission time by the RuntimeClass admission controller. If\\nthe RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.\\nThe RuntimeClass admission controller will reject Pod create requests which have the overhead already\\nset. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value\\ndefined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n \"type\": \"object\"\n },\n \"preemptionPolicy\": {\n \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority.\\nOne of Never, PreemptLowerPriority.\\nDefaults to PreemptLowerPriority if unset.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"The priority value. Various system components use this field to find the\\npriority of the pod. When Priority Admission Controller is enabled, it\\nprevents users from setting this field. The admission controller populates\\nthis field from PriorityClassName.\\nThe higher the value, the higher the priority.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and\\n\\\"system-cluster-critical\\\" are two special keywords which indicate the\\nhighest priorities with the former being the highest priority. Any other\\nname must be defined by creating a PriorityClass object with that name.\\nIf not specified, the pod priority will be default or zero if there is no\\ndefault.\",\n \"type\": \"string\"\n },\n \"readinessGates\": {\n \"description\": \"If specified, all readiness gates will be evaluated for pod readiness.\\nA pod is ready when all its containers are ready AND\\nall conditions specified in the readiness gates have status equal to \\\"True\\\"\\nMore info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n \"items\": {\n \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n \"properties\": {\n \"conditionType\": {\n \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"conditionType\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"resourceClaims\": {\n \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\n\\nThis field is immutable.\",\n \"items\": {\n \"description\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"Source describes where to find the ResourceClaim.\",\n \"properties\": {\n \"resourceClaimName\": {\n \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n \"type\": \"string\"\n },\n \"resourceClaimTemplateName\": {\n \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The pod name and resource name, along with a\\ngenerated component, will be used to form a unique name for the\\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"restartPolicy\": {\n \"description\": \"Restart policy for all containers within the pod.\\nOne of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted.\\nDefault to Always.\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n \"type\": \"string\"\n },\n \"runtimeClassName\": {\n \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n \"type\": \"string\"\n },\n \"schedulerName\": {\n \"description\": \"If specified, the pod will be dispatched by specified scheduler.\\nIf not specified, the pod will be dispatched by default scheduler.\",\n \"type\": \"string\"\n },\n \"schedulingGates\": {\n \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\\nscheduler will not attempt to schedule the pod.\\n\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n \"items\": {\n \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"securityContext\": {\n \"description\": \"SecurityContext holds pod-level security attributes and common container settings.\\nOptional: Defaults to empty. See type description for default values of each field.\",\n \"properties\": {\n \"appArmorProfile\": {\n \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile loaded on the node that should be used.\\nThe profile must be preconfigured on the node to work.\\nMust match the loaded name of the profile.\\nMust be set if and only if type is \\\"Localhost\\\".\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of AppArmor profile will be applied.\\nValid options are:\\n Localhost - a profile pre-loaded on the node.\\n RuntimeDefault - the container runtime's default profile.\\n Unconfined - no AppArmor enforcement.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"fsGroup\": {\n \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\\nbefore being exposed inside Pod. This field will only apply to\\nvolume types which support fsGroup based ownership(and permissions).\\nIt will have no effect on ephemeral volume types such as: secret, configmaps\\nand emptydir.\\nValid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"description\": \"Indicates that the container must run as a non-root user.\\nIf true, the Kubelet will validate the image at runtime to ensure that it\\ndoes not run as UID 0 (root) and fail to start the container if it does.\\nIf unset or false, no such validation will be performed.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"description\": \"The SELinux context to be applied to all containers.\\nIf unspecified, the container runtime will allocate a random SELinux context for each\\ncontainer. May also be set in SecurityContext. If set in\\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\\ntakes precedence for that container.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"level\": {\n \"description\": \"Level is SELinux level label that applies to the container.\",\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role is a SELinux role label that applies to the container.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type is a SELinux type label that applies to the container.\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"User is a SELinux user label that applies to the container.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"description\": \"The seccomp options to use by the containers in this pod.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"properties\": {\n \"localhostProfile\": {\n \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used.\\nThe profile must be preconfigured on the node to work.\\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\\nMust be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type indicates which kind of seccomp profile will be applied.\\nValid options are:\\n\\n\\nLocalhost - a profile defined in a file on the node should be used.\\nRuntimeDefault - the container runtime default profile should be used.\\nUnconfined - no profile should be applied.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"sysctls\": {\n \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\",\n \"items\": {\n \"description\": \"Sysctl defines a kernel parameter to be set\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of a property to set\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of a property to set\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"windowsOptions\": {\n \"description\": \"The Windows specific settings applied to all containers.\\nIf unspecified, the options within a container's SecurityContext will be used.\\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is linux.\",\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"description\": \"GMSACredentialSpec is where the GMSA admission webhook\\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\\nGMSA credential spec named by the GMSACredentialSpecName field.\",\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container.\\nAll of a Pod's containers must have the same effective HostProcess value\\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\\nIn addition, if HostProcess is true then HostNetwork must also be set to true.\",\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"description\": \"The UserName in Windows to run the entrypoint of the container process.\\nDefaults to the user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\\nDeprecated: Use serviceAccountName instead.\",\n \"type\": \"string\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod.\\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n \"type\": \"string\"\n },\n \"setHostnameAsFQDN\": {\n \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default).\\nIn Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).\\nIn Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Services\\\\\\\\Tcpip\\\\\\\\Parameters to FQDN.\\nIf a pod does not have FQDN, this has no effect.\\nDefault to false.\",\n \"type\": \"boolean\"\n },\n \"shareProcessNamespace\": {\n \"description\": \"Share a single process namespace between all of the containers in a pod.\\nWhen this is set containers will be able to view and signal processes from other containers\\nin the same pod, and the first process in each container will not be assigned PID 1.\\nHostPID and ShareProcessNamespace cannot both be set.\\nOptional: Default to false.\",\n \"type\": \"boolean\"\n },\n \"subdomain\": {\n \"description\": \"If specified, the fully qualified Pod hostname will be \\\"\\u003chostname\\u003e.\\u003csubdomain\\u003e.\\u003cpod namespace\\u003e.svc.\\u003ccluster domain\\u003e\\\".\\nIf not specified, the pod will not have a domainname at all.\",\n \"type\": \"string\"\n },\n \"terminationGracePeriodSeconds\": {\n \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.\\nValue must be non-negative integer. The value zero indicates stop immediately via\\nthe kill signal (no opportunity to shut down).\\nIf this value is nil, the default grace period will be used instead.\\nThe grace period is the duration in seconds after the processes running in the pod are sent\\na termination signal and the time when the processes are forcibly halted with a kill signal.\\nSet this value longer than the expected cleanup time for your process.\\nDefaults to 30 seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"description\": \"If specified, the pod's tolerations.\",\n \"items\": {\n \"description\": \"The pod this Toleration is attached to tolerates any taint that matches\\nthe triple \\u003ckey,value,effect\\u003e using the matching operator \\u003coperator\\u003e.\",\n \"properties\": {\n \"effect\": {\n \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects.\\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n \"type\": \"string\"\n },\n \"key\": {\n \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys.\\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"Operator represents a key's relationship to the value.\\nValid operators are Exists and Equal. Defaults to Equal.\\nExists is equivalent to wildcard for value, so that a pod can\\ntolerate all taints of a particular category.\",\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"description\": \"TolerationSeconds represents the period of time the toleration (which must be\\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\\nit is not set, which means tolerate the taint forever (do not evict). Zero and\\nnegative values will be treated as 0 (evict immediately) by the system.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value is the taint value the toleration matches to.\\nIf the operator is Exists, the value should be empty, otherwise just a regular string.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"topologySpreadConstraints\": {\n \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology\\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\\nAll topologySpreadConstraints are ANDed.\",\n \"items\": {\n \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"LabelSelector is used to find matching pods.\\nPods that match this label selector are counted to determine the number of pods\\nin their corresponding topology domain.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"matchLabelKeys\": {\n \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\\nMatchLabelKeys cannot be set when LabelSelector isn't set.\\nKeys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"maxSkew\": {\n \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P |\\n- if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\n- if MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minDomains\": {\n \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n| zone1 | zone2 | zone3 |\\n| P P | P P | P P |\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeAffinityPolicy\": {\n \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\\nwhen calculating pod topology spread skew. Options are:\\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"nodeTaintsPolicy\": {\n \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating\\npod topology spread skew. Options are:\\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\\nhas a toleration, are included.\\n- Ignore: node taints are ignored. All nodes are included.\\n\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy.\\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n \"type\": \"string\"\n },\n \"topologyKey\": {\n \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n \"type\": \"string\"\n },\n \"whenUnsatisfiable\": {\n \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy\\nthe spread constraint.\\n- DoNotSchedule (default) tells the scheduler not to schedule it.\\n- ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n but giving higher precedence to topologies that would help reduce the\\n skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod\\nif and only if every possible node assignment for that pod would violate\\n\\\"MaxSkew\\\" on some topology.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 3/1/1:\\n| zone1 | zone2 | zone3 |\\n| P P P | P | P |\\nIf WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled\\nto zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies\\nMaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler\\nwon't make it *more* imbalanced.\\nIt's a required field.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"maxSkew\",\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"topologyKey\",\n \"whenUnsatisfiable\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"volumes\": {\n \"description\": \"List of volumes that can be mounted by containers belonging to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes\",\n \"items\": {\n \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"cachingMode\": {\n \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n \"type\": \"string\"\n },\n \"diskName\": {\n \"description\": \"diskName is the Name of the data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"description\": \"diskURI is the URI of data disk in the blob storage\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind expected values are 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\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n \"properties\": {\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n \"type\": \"string\"\n },\n \"shareName\": {\n \"description\": \"shareName is the azure share Name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"monitors\": {\n \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"path\": {\n \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect\\nto OpenStack.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap represents a configMap that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\",\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"description\": \"nodePublishSecretRef is a reference to the secret object containing\\nsensitive information to pass to the CSI driver to complete the CSI\\nNodePublishVolume and NodeUnpublishVolume calls.\\nThis field is optional, and may be empty if no secret is required. If the\\nsecret object contains more than one secret, all secret references are passed.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\",\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"Optional: mode bits to use on created files by default. Must be a\\nOptional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"Items is a list of downward API volume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"properties\": {\n \"medium\": {\n \"description\": \"medium represents what type of storage medium should back this directory.\\nThe default is \\\"\\\" which means to use the node's default medium.\\nMust be an empty string (default) or Memory.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume.\\nThe size limit is also applicable for memory medium.\\nThe maximum usage on memory medium EmptyDir would be the minimum value between\\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\\nThe default is nil which means that the limit is undefined.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver.\\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\\nand deleted when the pod is removed.\\n\\n\\nUse this if:\\na) the volume is only needed while the pod runs,\\nb) features of normal volumes like restoring from snapshot or capacity\\n tracking are needed,\\nc) the storage driver is specified through a storage class, and\\nd) the storage driver supports dynamic volume provisioning through\\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n information on the connection between this volume type\\n and PersistentVolumeClaim).\\n\\n\\nUse PersistentVolumeClaim or one of the vendor-specific\\nAPIs for volumes that persist for longer than the lifecycle\\nof an individual pod.\\n\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\\nbe used that way - see the documentation of the driver for\\nmore information.\\n\\n\\nA pod can use both types of ephemeral volumes and\\npersistent volumes at the same time.\",\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"description\": \"Will be used to create a stand-alone PVC to provision the volume.\\nThe pod in which this EphemeralVolumeSource is embedded will be the\\nowner of the PVC, i.e. the PVC will be deleted together with the\\npod. The name of the PVC will be `\\u003cpod name\\u003e-\\u003cvolume name\\u003e` where\\n`\\u003cvolume name\\u003e` is the name from the `PodSpec.Volumes` array\\nentry. Pod validation will reject the pod if the concatenated name\\nis not valid for a PVC (for example, too long).\\n\\n\\nAn existing PVC with that name that is not owned by the pod\\nwill *not* be used for the pod to avoid using an unrelated\\nvolume by mistake. Starting the pod is then blocked until\\nthe unrelated PVC is removed. If such a pre-created PVC is\\nmeant to be used by the pod, the PVC has to updated with an\\nowner reference to the pod once the pod exists. Normally\\nthis should not be necessary, but it may be useful when\\nmanually reconstructing a broken cluster.\\n\\n\\nThis field is read-only and no changes will be made by Kubernetes\\nto the PVC after it has been created.\\n\\n\\nRequired, must not be nil.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"May contain labels and annotations that will be copied into the PVC\\nwhen creating it. No other fields are allowed and will be rejected during\\nvalidation.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"The specification for the PersistentVolumeClaim. The entire content is\\ncopied unchanged into the PVC that gets created from this\\ntemplate. The same fields as in a PersistentVolumeClaim\\nare also valid here.\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun is Optional: FC target lun number\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"wwids\": {\n \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"description\": \"flexVolume represents a generic volume resource that is\\nprovisioned/attached using an exec based plugin.\",\n \"properties\": {\n \"driver\": {\n \"description\": \"driver is the name of the driver to use for this volume.\",\n \"type\": \"string\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"options is Optional: this field holds extra command options if any.\",\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing\\nsensitive information to pass to the plugin scripts. This may be\\nempty if no secret object is specified. If the secret object\\ncontains more than one secret, all secrets are passed to the plugin\\nscripts.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\",\n \"properties\": {\n \"datasetName\": {\n \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\",\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"partition\": {\n \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"description\": \"gitRepo represents a git repository at a particular revision.\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n \"properties\": {\n \"directory\": {\n \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"repository is the URL\",\n \"type\": \"string\"\n },\n \"revision\": {\n \"description\": \"revision is the commit hash for the specified revision.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md\",\n \"properties\": {\n \"endpoints\": {\n \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"description\": \"hostPath represents a pre-existing file or directory on the host\\nmachine that is directly exposed to the container. This is generally\\nused for system agents or other privileged things that are allowed\\nto see the host machine. Most containers will NOT need this.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\\n---\\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\\nmount host directories as read/write.\",\n \"properties\": {\n \"path\": {\n \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type for HostPath Volume\\nDefaults to \\\"\\\"\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a\\nkubelet's host machine and then exposed to the pod.\\nMore info: https://examples.k8s.io/volumes/iscsi/README.md\",\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\",\n \"type\": \"string\"\n },\n \"iqn\": {\n \"description\": \"iqn is the target iSCSI Qualified Name.\",\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\",\n \"type\": \"string\"\n },\n \"lun\": {\n \"description\": \"lun represents iSCSI Target Lun number.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"nfs\": {\n \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"properties\": {\n \"path\": {\n \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"boolean\"\n },\n \"server\": {\n \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a\\nPersistentVolumeClaim in the same namespace.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"claimName\": {\n \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"pdID\": {\n \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"description\": \"volumeID uniquely identifies a Portworx volume\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"description\": \"sources is the list of volume projections\",\n \"items\": {\n \"description\": \"Projection that may be projected along with other supported volume types\",\n \"properties\": {\n \"clusterTrustBundle\": {\n \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\\nof ClusterTrustBundle objects in an auto-updating file.\\n\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\n\\nClusterTrustBundle objects can either be selected by name, or by the\\ncombination of signer name and a label selector.\\n\\n\\nKubelet performs aggressive normalization of the PEM contents written\\ninto the pod filesystem. Esoteric PEM features such as inter-block\\ncomments and block headers are stripped. Certificates are deduplicated.\\nThe ordering of certificates within the file is arbitrary, and Kubelet\\nmay change the order over time.\",\n \"properties\": {\n \"labelSelector\": {\n \"description\": \"Select all ClusterTrustBundles that match this label selector. Only has\\neffect if signerName is set. Mutually-exclusive with name. If unset,\\ninterpreted as \\\"match nothing\\\". If set but empty, interpreted as \\\"match\\neverything\\\".\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"name\": {\n \"description\": \"Select a single ClusterTrustBundle by object name. Mutually-exclusive\\nwith signerName and labelSelector.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s)\\naren't available. If using name, then the named ClusterTrustBundle is\\nallowed not to exist. If using signerName, then the combination of\\nsignerName and labelSelector is allowed to match zero\\nClusterTrustBundles.\",\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"Relative path from the volume root to write the bundle.\",\n \"type\": \"string\"\n },\n \"signerName\": {\n \"description\": \"Select all ClusterTrustBundles that match this signer name.\\nMutually-exclusive with name. The contents of all selected\\nClusterTrustBundles will be unified and deduplicated.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"description\": \"configMap information about the configMap data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"description\": \"downwardAPI information about the downwardAPI data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"Items is a list of DownwardAPIVolume file\",\n \"items\": {\n \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n \"properties\": {\n \"fieldRef\": {\n \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"Path of the field to select in the specified API version.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value\\nbetween 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"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 '..'\",\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"description\": \"Selects a resource of the container: only resources limits and requests\\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\",\n \"properties\": {\n \"containerName\": {\n \"description\": \"Container name: required for volumes, optional for env vars\",\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\",\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"description\": \"Required: resource to select\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret information about the secret data to project\",\n \"properties\": {\n \"items\": {\n \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its key must be defined\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\",\n \"properties\": {\n \"audience\": {\n \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\",\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\",\n \"properties\": {\n \"group\": {\n \"description\": \"group to map volume access to\\nDefault is no group\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n \"type\": \"string\"\n },\n \"user\": {\n \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\",\n \"type\": \"string\"\n },\n \"volume\": {\n \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\",\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"keyring\": {\n \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"monitors\": {\n \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"pool\": {\n \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided\\noverrides keyring.\\nDefault is nil.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\",\n \"type\": \"string\"\n },\n \"gateway\": {\n \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef references to the secret for ScaleIO user and other\\nsensitive information. If this is not provided, Login operation will fail.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\",\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n \"type\": \"string\"\n },\n \"system\": {\n \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"description\": \"secret represents a secret that should populate this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"properties\": {\n \"defaultMode\": {\n \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\",\n \"items\": {\n \"description\": \"Maps a string key to a path within a volume.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the key to project.\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"optional\": {\n \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\",\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API\\ncredentials. If not specified, default values will be attempted.\",\n \"properties\": {\n \"name\": {\n \"default\": \"\",\n \"description\": \"Name of the referent.\\nThis field is effectively required, but due to backwards compatibility is\\nallowed to be empty. Instances of this type with an empty value here are\\nalmost certainly wrong.\\nTODO: Add other useful fields. apiVersion, kind, uid?\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\\nTODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\",\n \"properties\": {\n \"fsType\": {\n \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"required\": [\n \"containers\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"string\"\n },\n \"revisionHistoryLimit\": {\n \"description\": \"RevisionHistoryLimit is the number of revisions to retain to allow rollback in the underlying StatefulSet.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"secureSettings\": {\n \"description\": \"SecureSettings is a list of references to Kubernetes Secrets containing sensitive configuration options for the Logstash.\\nSecrets data can be then referenced in the Logstash config using the Secret's keys or as specified in `Entries` field of\\neach SecureSetting.\",\n \"items\": {\n \"description\": \"SecretSource defines a data source based on a Kubernetes Secret.\",\n \"properties\": {\n \"entries\": {\n \"description\": \"Entries define how to project each key-value pair in the secret to filesystem paths.\\nIf not defined, all keys will be projected to similarly named paths in the filesystem.\\nIf defined, only the specified keys will be projected to the corresponding paths.\",\n \"items\": {\n \"description\": \"KeyToPath defines how to map a key in a Secret object to a filesystem path.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key contained in the secret.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the relative file path to map the key to.\\nPath must not be an absolute file path and must not contain any \\\"..\\\" components.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is used to check access from the current resource to Elasticsearch resource in a different namespace.\\nCan only be used if ECK is enforcing RBAC on references.\",\n \"type\": \"string\"\n },\n \"services\": {\n \"description\": \"Services contains details of services that Logstash should expose - similar to the HTTP layer configuration for the\\nrest of the stack, but also applicable for more use cases than the metrics API, as logstash may need to\\nbe opened up for other services: Beats, TCP, UDP, etc, inputs.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Service defines the template for the associated Kubernetes Service object.\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"ObjectMeta is the metadata of the service.\\nThe name and namespace provided here are managed by ECK and will be ignored.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"Spec is the specification of the service.\",\n \"properties\": {\n \"allocateLoadBalancerNodePorts\": {\n \"description\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\",\n \"type\": \"boolean\"\n },\n \"clusterIP\": {\n \"description\": \"clusterIP is the IP address of the service and is usually assigned\\nrandomly. If an address is specified manually, is in-range (as per\\nsystem configuration), and is not in use, it will be allocated to the\\nservice; otherwise creation of the service will fail. This field may not\\nbe changed through updates unless the type field is also being changed\\nto ExternalName (which requires this field to be blank) or the type\\nfield is being changed from ExternalName (in which case this field may\\noptionally be specified, as describe above). Valid values are \\\"None\\\",\\nempty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a\\n\\\"headless service\\\" (no virtual IP), which is useful when direct endpoint\\nconnections are preferred and proxying is not required. Only applies to\\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\\nwhen creating a Service of type ExternalName, creation will fail. This\\nfield will be wiped when updating a Service to type ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"clusterIPs\": {\n \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\\nThese IPs must correspond to the values of the ipFamilies field. Both\\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalIPs\": {\n \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster\\nwill also accept traffic for this service. These IPs are not managed by\\nKubernetes. The user is responsible for ensuring that traffic arrives\\nat a node with this IP. A common example is external load-balancers\\nthat are not part of the Kubernetes system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"externalName\": {\n \"description\": \"externalName is the external reference that discovery mechanisms will\\nreturn as an alias for this service (e.g. a DNS CNAME record). No\\nproxying will be involved. Must be a lowercase RFC-1123 hostname\\n(https://tools.ietf.org/html/rfc1123) and requires `type` to be \\\"ExternalName\\\".\",\n \"type\": \"string\"\n },\n \"externalTrafficPolicy\": {\n \"description\": \"externalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts,\\nExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure\\nthe service in a way that assumes that external load balancers will take care\\nof balancing the service traffic between nodes, and so each node will deliver\\ntraffic only to the node-local endpoints of the service, without masquerading\\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\\nbe dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of\\nrouting to all endpoints evenly (possibly modified by topology and other\\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\\nwithin the cluster will always get \\\"Cluster\\\" semantics, but clients sending to\\na NodePort from within the cluster may need to take traffic policy into account\\nwhen picking a node.\",\n \"type\": \"string\"\n },\n \"healthCheckNodePort\": {\n \"description\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\nThis field cannot be updated once set.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"internalTrafficPolicy\": {\n \"description\": \"InternalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods\\nonly want to talk to endpoints of the service on the same node as the pod,\\ndropping the traffic if there are no local endpoints. The default value,\\n\\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly\\n(possibly modified by topology and other features).\",\n \"type\": \"string\"\n },\n \"ipFamilies\": {\n \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice. This field is usually assigned automatically based on cluster\\nconfiguration and the ipFamilyPolicy field. If this field is specified\\nmanually, the requested family is available in the cluster,\\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\\nthe service will fail. This field is conditionally mutable: it allows\\nfor adding or removing a secondary IP family, but it does not allow\\nchanging the primary IP family of the Service. Valid values are \\\"IPv4\\\"\\nand \\\"IPv6\\\". This field only applies to Services of types ClusterIP,\\nNodePort, and LoadBalancer, and does apply to \\\"headless\\\" services.\\nThis field will be wiped when updating a Service to type ExternalName.\\n\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\",\n \"items\": {\n \"description\": \"IPFamily represents the IP Family (IPv4 or IPv6). This type is used\\nto express the family of an IP expressed by a type (e.g. service.spec.ipFamilies).\",\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ipFamilyPolicy\": {\n \"description\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service. If there is no value provided, then this field will be set\\nto SingleStack. Services can be \\\"SingleStack\\\" (a single IP family),\\n\\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or\\na single IP family on single-stack clusters), or \\\"RequireDualStack\\\"\\n(two IP families on dual-stack configured clusters, otherwise fail). The\\nipFamilies and clusterIPs fields depend on the value of this field. This\\nfield will be wiped when updating a service to type ExternalName.\",\n \"type\": \"string\"\n },\n \"loadBalancerClass\": {\n \"description\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\",\n \"type\": \"string\"\n },\n \"loadBalancerIP\": {\n \"description\": \"Only applies to Service Type: LoadBalancer.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\nDeprecated: This field was under-specified and its meaning varies across implementations.\\nUsing it is non-portable and it may not support dual-stack.\\nUsers are encouraged to use implementation-specific annotations when available.\",\n \"type\": \"string\"\n },\n \"loadBalancerSourceRanges\": {\n \"description\": \"If specified and supported by the platform, this will restrict traffic through the cloud-provider\\nload-balancer will be restricted to the specified client IPs. This field will be ignored if the\\ncloud-provider does not support the feature.\\\"\\nMore info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ports\": {\n \"description\": \"The list of ports that are exposed by this service.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"items\": {\n \"description\": \"ServicePort contains information on service's port.\",\n \"properties\": {\n \"appProtocol\": {\n \"description\": \"The application protocol for this port.\\nThis is used as a hint for implementations to offer richer behavior for protocols that they understand.\\nThis field follows standard Kubernetes label syntax.\\nValid values are either:\\n\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per\\nRFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n\\n* Kubernetes-defined prefixed names:\\n * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n\\n* Other protocols should use implementation-defined prefixed names such as\\nmycompany.com/my-custom-protocol.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of this port within the service. This must be a DNS_LABEL.\\nAll ports within a ServiceSpec must have unique names. When considering\\nthe endpoints for a Service, this must match the 'name' field in the\\nEndpointPort.\\nOptional if only one ServicePort is defined on this service.\",\n \"type\": \"string\"\n },\n \"nodePort\": {\n \"description\": \"The port on each node on which this service is exposed when type is\\nNodePort or LoadBalancer. Usually assigned by the system. If a value is\\nspecified, in-range, and not in use it will be used, otherwise the\\noperation will fail. If not specified, a port will be allocated if this\\nService requires one. If this field is specified when creating a\\nService which does not need it, creation will fail. This field will be\\nwiped when updating a Service to no longer need it (e.g. changing type\\nfrom NodePort to ClusterIP).\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"port\": {\n \"description\": \"The port that will be exposed by this service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\".\\nDefault is TCP.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Number or name of the port to access on the pods targeted by the service.\\nNumber must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\\nIf this is a string, it will be looked up as a named port in the\\ntarget Pod's container ports. If this is not specified, the value\\nof the 'port' field is used (an identity map).\\nThis field is ignored for services with clusterIP=None, and should be\\nomitted or set equal to the 'port' field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"port\",\n \"protocol\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"publishNotReadyAddresses\": {\n \"description\": \"publishNotReadyAddresses indicates that any agent which deals with endpoints for this\\nService should disregard any indications of ready/not-ready.\\nThe primary use case for setting this field is for a StatefulSet's Headless Service to\\npropagate SRV DNS records for its Pods for the purpose of peer discovery.\\nThe Kubernetes controllers that generate Endpoints and EndpointSlice resources for\\nServices interpret this to mean that all endpoints are considered \\\"ready\\\" even if the\\nPods themselves are not. Agents which consume only Kubernetes generated endpoints\\nthrough the Endpoints or EndpointSlice resources can safely assume this behavior.\",\n \"type\": \"boolean\"\n },\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Route service traffic to pods with label keys and values matching this\\nselector. If empty or not present, the service is assumed to have an\\nexternal process managing its endpoints, which Kubernetes will not\\nmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.\\nIgnored if type is ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sessionAffinity\": {\n \"description\": \"Supports \\\"ClientIP\\\" and \\\"None\\\". Used to maintain session affinity.\\nEnable client IP based session affinity.\\nMust be ClientIP or None.\\nDefaults to None.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n \"type\": \"string\"\n },\n \"sessionAffinityConfig\": {\n \"description\": \"sessionAffinityConfig contains the configurations of session affinity.\",\n \"properties\": {\n \"clientIP\": {\n \"description\": \"clientIP contains the configurations of Client IP based session affinity.\",\n \"properties\": {\n \"timeoutSeconds\": {\n \"description\": \"timeoutSeconds specifies the seconds of ClientIP type session sticky time.\\nThe value must be \\u003e0 \\u0026\\u0026 \\u003c=86400(for 1 day) if ServiceAffinity == \\\"ClientIP\\\".\\nDefault value is 10800(for 3 hours).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"trafficDistribution\": {\n \"description\": \"TrafficDistribution offers a way to express preferences for how traffic is\\ndistributed to Service endpoints. Implementations can use this field as a\\nhint, but are not required to guarantee strict adherence. If the field is\\nnot set, the implementation will apply its default routing strategy. If set\\nto \\\"PreferClose\\\", implementations should prioritize endpoints that are\\ntopologically close (e.g., same zone).\\nThis is an alpha field and requires enabling ServiceTrafficDistribution feature.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"type determines how the Service is exposed. Defaults to ClusterIP. Valid\\noptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.\\n\\\"ClusterIP\\\" allocates a cluster-internal IP address for load-balancing\\nto endpoints. Endpoints are determined by the selector or if that is not\\nspecified, by manual construction of an Endpoints object or\\nEndpointSlice objects. If clusterIP is \\\"None\\\", no virtual IP is\\nallocated and the endpoints are published as a set of endpoints rather\\nthan a virtual IP.\\n\\\"NodePort\\\" builds on ClusterIP and allocates a port on every node which\\nroutes to the same endpoints as the clusterIP.\\n\\\"LoadBalancer\\\" builds on NodePort and creates an external load-balancer\\n(if supported in the current cloud) which routes to the same endpoints\\nas the clusterIP.\\n\\\"ExternalName\\\" aliases this service to the specified externalName.\\nSeveral other fields do not apply to ExternalName services.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS defines options for configuring TLS for HTTP.\",\n \"properties\": {\n \"certificate\": {\n \"description\": \"Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS.\\nThe referenced secret should contain the following:\\n\\n\\n- `ca.crt`: The certificate authority (optional).\\n- `tls.crt`: The certificate (or a chain).\\n- `tls.key`: The private key to the first certificate in the certificate chain.\",\n \"properties\": {\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selfSignedCertificate\": {\n \"description\": \"SelfSignedCertificate allows configuring the self-signed certificate generated by the operator.\",\n \"properties\": {\n \"disabled\": {\n \"description\": \"Disabled indicates that the provisioning of the self-signed certifcate should be disabled.\",\n \"type\": \"boolean\"\n },\n \"subjectAltNames\": {\n \"description\": \"SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate.\",\n \"items\": {\n \"description\": \"SubjectAlternativeName represents a SAN entry in a x509 certificate.\",\n \"properties\": {\n \"dns\": {\n \"description\": \"DNS is the DNS name of the subject.\",\n \"type\": \"string\"\n },\n \"ip\": {\n \"description\": \"IP is the IP address of the subject.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"updateStrategy\": {\n \"description\": \"UpdateStrategy is a StatefulSetUpdateStrategy. The default type is \\\"RollingUpdate\\\".\",\n \"properties\": {\n \"rollingUpdate\": {\n \"description\": \"RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.\",\n \"properties\": {\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"The maximum number of pods that can be unavailable during the update.\\nValue can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).\\nAbsolute number is calculated from percentage by rounding up. This can not be 0.\\nDefaults to 1. This field is alpha-level and is only honored by servers that enable the\\nMaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to\\nReplicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it\\nwill be counted towards MaxUnavailable.\",\n \"x-kubernetes-int-or-string\": true\n },\n \"partition\": {\n \"description\": \"Partition indicates the ordinal at which the StatefulSet should be partitioned\\nfor updates. During a rolling update, all pods from ordinal Replicas-1 to\\nPartition are updated. All pods from ordinal Partition-1 to 0 remain untouched.\\nThis is helpful in being able to do a canary based deployment. The default value is 0.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type indicates the type of the StatefulSetUpdateStrategy.\\nDefault is RollingUpdate.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"version\": {\n \"description\": \"Version of the Logstash.\",\n \"type\": \"string\"\n },\n \"volumeClaimTemplates\": {\n \"description\": \"VolumeClaimTemplates is a list of persistent volume claims to be used by each Pod.\\nEvery claim in this list must have a matching volumeMount in one of the containers defined in the PodTemplate.\\nItems defined here take precedence over any default claims added by the operator with the same name.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaim is a user's request for and claim to a persistent volume\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion defines the versioned schema of this representation of an object.\\nServers should convert recognized schemas to the latest internal value, and\\nmay reject unrecognized values.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is a string value representing the REST resource this object represents.\\nServers may infer this from the endpoint the client submits requests to.\\nCannot be updated.\\nIn CamelCase.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Standard object's metadata.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"description\": \"spec defines the desired characteristics of a volume requested by a pod author.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"dataSource\": {\n \"description\": \"dataSource field can be used to specify either:\\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\\n* An existing PVC (PersistentVolumeClaim)\\nIf the provisioner or an external controller can support the specified data source,\\nit will create a new volume based on the contents of the specified data source.\\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\\nvolume is desired. This may be any object from a non-empty API group (non\\ncore object) or a PersistentVolumeClaim object.\\nWhen this field is specified, volume binding will only succeed if the type of\\nthe specified object matches some installed volume populator or dynamic\\nprovisioner.\\nThis field will replace the functionality of the dataSource field and as such\\nif both fields are non-empty, they must have the same value. For backwards\\ncompatibility, when namespace isn't specified in dataSourceRef,\\nboth fields (dataSource and dataSourceRef) will be set to the same\\nvalue automatically if one of them is empty and the other is non-empty.\\nWhen namespace is specified in dataSourceRef,\\ndataSource isn't set to the same value and must be empty.\\nThere are three important differences between dataSource and dataSourceRef:\\n* While dataSource only allows two specific types of objects, dataSourceRef\\n allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n preserves all values, and generates an error if a disallowed value is\\n specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"properties\": {\n \"apiGroup\": {\n \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind is the type of resource being referenced\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name is the name of resource being referenced\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"description\": \"resources represents the minimum resources the volume should have.\\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\\nthat are lower than previous value but must still be higher than capacity recorded in the\\nstatus field of the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\",\n \"properties\": {\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Limits describes the maximum amount of compute resources allowed.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"Requests describes the minimum amount of compute resources required.\\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\\notherwise to an implementation-defined value. Requests cannot exceed Limits.\\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"selector is a label query over volumes to consider for binding.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n \"type\": \"string\"\n },\n \"volumeAttributesClassName\": {\n \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\\nIf specified, the CSI driver will create or update the volume with the attributes defined\\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\\nwill be set by the persistentvolume controller if it exists.\\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\\nexists.\\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.\",\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"description\": \"volumeMode defines what type of volume is required by the claim.\\nValue of Filesystem is implied when not included in claim spec.\",\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"status represents the current information/status of a persistent volume claim.\\nRead-only.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n \"properties\": {\n \"accessModes\": {\n \"description\": \"accessModes contains the actual access modes the volume backing the PVC has.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"allocatedResourceStatuses\": {\n \"additionalProperties\": {\n \"description\": \"When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource\\nthat it does not recognizes, then it should ignore that update and let other controllers\\nhandle it.\",\n \"type\": \"string\"\n },\n \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"granular\"\n },\n \"allocatedResources\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity.\\nKey names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered\\nreserved and hence may not be used.\\n\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation\\nis requested.\\nFor storage quota, the larger value from allocatedResources and PVC.spec.resources is used.\\nIf allocatedResources is not set, PVC.spec.resources alone is used for quota calculation.\\nIf a volume expansion capacity request is lowered, allocatedResources is only\\nlowered if there are no expansion operations in progress and if the actual volume capacity\\nis equal or lower than the requested capacity.\\n\\n\\nA controller that receives PVC update with previously unknown resourceName\\nshould ignore the update for the purpose it was designed. For example - a controller that\\nonly is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid\\nresources associated with PVC.\\n\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n \"type\": \"object\"\n },\n \"capacity\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"description\": \"capacity represents the actual resources of the underlying volume.\",\n \"type\": \"object\"\n },\n \"conditions\": {\n \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being\\nresized then the Condition will be set to 'Resizing'.\",\n \"items\": {\n \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n \"properties\": {\n \"lastProbeTime\": {\n \"description\": \"lastProbeTime is the time we probed the condition.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"lastTransitionTime\": {\n \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"message is the human-readable message indicating details about last transition.\",\n \"type\": \"string\"\n },\n \"reason\": {\n \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason\\nfor condition's last transition. If it reports \\\"Resizing\\\" that means the underlying\\npersistent volume is being resized.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"type\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"currentVolumeAttributesClassName\": {\n \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.\\nWhen unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"type\": \"string\"\n },\n \"modifyVolumeStatus\": {\n \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.\\nWhen this is unset, there is no ModifyVolume operation being attempted.\\nThis is an alpha field and requires enabling VolumeAttributesClass feature.\",\n \"properties\": {\n \"status\": {\n \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n the specified VolumeAttributesClass not existing.\\n - InProgress\\n InProgress indicates that the volume is being modified.\\n - Infeasible\\n Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n \"type\": \"string\"\n },\n \"targetVolumeAttributesClassName\": {\n \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"phase\": {\n \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"version\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Logstash\",\n \"type\": \"object\"\n}",
+ "version": "logstash.k8s.elastic.co/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Logstash",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/StackConfigPolicy.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/StackConfigPolicy.json
new file mode 100644
index 00000000000..d33c80589df
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/components/StackConfigPolicy.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "StackConfigPolicy",
+ "schema": "{\n \"description\": \"StackConfigPolicy represents a StackConfigPolicy resource in a Kubernetes cluster.\",\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"elasticsearch\": {\n \"properties\": {\n \"clusterSettings\": {\n \"description\": \"ClusterSettings holds the Elasticsearch cluster settings (/_cluster/settings)\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"config\": {\n \"description\": \"Config holds the settings that go into elasticsearch.yml.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"indexLifecyclePolicies\": {\n \"description\": \"IndexLifecyclePolicies holds the Index Lifecycle policies settings (/_ilm/policy)\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"indexTemplates\": {\n \"description\": \"IndexTemplates holds the Index and Component Templates settings\",\n \"format\": \"textarea\",\n \"properties\": {\n \"componentTemplates\": {\n \"description\": \"ComponentTemplates holds the Component Templates settings (/_component_template)\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"composableIndexTemplates\": {\n \"description\": \"ComposableIndexTemplates holds the Index Templates settings (/_index_template)\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"string\"\n },\n \"ingestPipelines\": {\n \"description\": \"IngestPipelines holds the Ingest Pipelines settings (/_ingest/pipeline)\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"secretMounts\": {\n \"description\": \"SecretMounts are additional Secrets that need to be mounted into the Elasticsearch pods.\",\n \"format\": \"textarea\",\n \"items\": {\n \"description\": \"SecretMount contains information about additional secrets to be mounted to the elasticsearch pods\",\n \"properties\": {\n \"mountPath\": {\n \"description\": \"MountPath denotes the path to which the secret should be mounted to inside the elasticsearch pod\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName denotes the name of the secret that needs to be mounted to the elasticsearch pod\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"string\"\n },\n \"secureSettings\": {\n \"description\": \"SecureSettings are additional Secrets that contain data to be configured to Elasticsearch's keystore.\",\n \"format\": \"textarea\",\n \"items\": {\n \"description\": \"SecretSource defines a data source based on a Kubernetes Secret.\",\n \"properties\": {\n \"entries\": {\n \"description\": \"Entries define how to project each key-value pair in the secret to filesystem paths.\\nIf not defined, all keys will be projected to similarly named paths in the filesystem.\\nIf defined, only the specified keys will be projected to the corresponding paths.\",\n \"items\": {\n \"description\": \"KeyToPath defines how to map a key in a Secret object to a filesystem path.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key contained in the secret.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the relative file path to map the key to.\\nPath must not be an absolute file path and must not contain any \\\"..\\\" components.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"string\"\n },\n \"securityRoleMappings\": {\n \"description\": \"SecurityRoleMappings holds the Role Mappings settings (/_security/role_mapping)\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"snapshotLifecyclePolicies\": {\n \"description\": \"SnapshotLifecyclePolicies holds the Snapshot Lifecycle Policies settings (/_slm/policy)\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"snapshotRepositories\": {\n \"description\": \"SnapshotRepositories holds the Snapshot Repositories settings (/_snapshot)\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"kibana\": {\n \"properties\": {\n \"config\": {\n \"description\": \"Config holds the settings that go into kibana.yml.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"secureSettings\": {\n \"description\": \"SecureSettings are additional Secrets that contain data to be configured to Kibana's keystore.\",\n \"format\": \"textarea\",\n \"items\": {\n \"description\": \"SecretSource defines a data source based on a Kubernetes Secret.\",\n \"properties\": {\n \"entries\": {\n \"description\": \"Entries define how to project each key-value pair in the secret to filesystem paths.\\nIf not defined, all keys will be projected to similarly named paths in the filesystem.\\nIf defined, only the specified keys will be projected to the corresponding paths.\",\n \"items\": {\n \"description\": \"KeyToPath defines how to map a key in a Secret object to a filesystem path.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key contained in the secret.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the relative file path to map the key to.\\nPath must not be an absolute file path and must not contain any \\\"..\\\" components.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"resourceSelector\": {\n \"description\": \"A label selector is a label query over a set of resources. The result of matchLabels and\\nmatchExpressions are ANDed. An empty label selector matches all objects. A null\\nlabel selector matches no objects.\",\n \"properties\": {\n \"matchExpressions\": {\n \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n \"items\": {\n \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that\\nrelates the key and values.\",\n \"properties\": {\n \"key\": {\n \"description\": \"key is the label key that the selector applies to.\",\n \"type\": \"string\"\n },\n \"operator\": {\n \"description\": \"operator represents a key's relationship to a set of values.\\nValid operators are In, NotIn, Exists and DoesNotExist.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"values is an array of string values. If the operator is In or NotIn,\\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\\nthe values array must be empty. This array is replaced during a strategic\\nmerge patch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"secureSettings\": {\n \"description\": \"Deprecated: SecureSettings only applies to Elasticsearch and is deprecated. It must be set per application instead.\",\n \"items\": {\n \"description\": \"SecretSource defines a data source based on a Kubernetes Secret.\",\n \"properties\": {\n \"entries\": {\n \"description\": \"Entries define how to project each key-value pair in the secret to filesystem paths.\\nIf not defined, all keys will be projected to similarly named paths in the filesystem.\\nIf defined, only the specified keys will be projected to the corresponding paths.\",\n \"items\": {\n \"description\": \"KeyToPath defines how to map a key in a Secret object to a filesystem path.\",\n \"properties\": {\n \"key\": {\n \"description\": \"Key is the key contained in the secret.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path is the relative file path to map the key to.\\nPath must not be an absolute file path and must not contain any \\\"..\\\" components.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"secretName\": {\n \"description\": \"SecretName is the name of the secret.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Stack Config Policy\",\n \"type\": \"object\"\n}",
+ "version": "stackconfigpolicy.k8s.elastic.co/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Stack Config Policy",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "git://github.com/elastic/cloud-on-k8s/main/config/crds/v1/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n\u003cpath d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"/\u003e\n\u003cpath d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"/\u003e\n\u003cpath d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"/\u003e\n\u003cpath d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"/\u003e\n\u003cpath d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"/\u003e\n\u003cpath d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"/\u003e\n\u003cpath d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"/\u003e\n\u003c/svg\u003e",
+ "svgWhite": "\u003csvg width=\"205\" height=\"204\" viewBox=\"0 0 205 204\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath\n d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\"\n fill=\"#000\" /\u003e\n \u003cpath\n d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\"\n fill=\"#fff\" /\u003e\n \u003cpath\n d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\"\n fill=\"#fff\" /\u003e\n\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/model.json b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/model.json
new file mode 100644
index 00000000000..c4ea4ba49d1
--- /dev/null
+++ b/server/meshmodel/elasticsearch-operator/v2.14.0/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Elastic Search",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#FEC514",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"white\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#FEC514\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#00BFB3\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#F04E98\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#1BA9F5\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#93C90E\"\u003e\u003c/path\u003e\n\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#0077CC\"\u003e\u003c/path\u003e\n\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 205 204\" fill=\"none\"\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M204.58 106.744C204.603 98.4365 202.056 90.3256 197.289 83.5226C192.521 76.7196 185.766 71.5575 177.95 68.7437C178.661 65.1202 179.02 61.4363 179.02 57.7437C179.015 45.5282 175.137 33.6288 167.945 23.7553C160.752 13.8817 150.615 6.54212 138.99 2.79108C127.365 -0.95996 114.849 -0.929399 103.242 2.87837C91.6356 6.68615 81.5344 14.0751 74.3903 23.9837C69.1179 19.9113 62.6636 17.6651 56.0021 17.5844C49.3406 17.5036 42.8337 19.5926 37.4641 23.536C32.0946 27.4793 28.1539 33.0628 26.2374 39.4431C24.3208 45.8235 24.5325 52.6542 26.8403 58.9037C19.0148 61.7531 12.2486 66.929 7.45072 73.7362C2.6528 80.5433 0.0529206 88.6558 0.000313645 96.9837C-0.0326102 105.33 2.52727 113.48 7.32627 120.309C12.1253 127.138 18.9265 132.307 26.7903 135.104C25.1677 143.453 25.4123 152.057 27.5064 160.301C29.6005 168.544 33.4924 176.222 38.903 182.784C44.3136 189.347 51.1089 194.631 58.8019 198.258C66.495 201.885 74.8951 203.765 83.4003 203.764C92.5559 203.772 101.581 201.59 109.722 197.402C117.863 193.213 124.884 187.138 130.2 179.684C135.455 183.802 141.912 186.091 148.588 186.201C155.264 186.312 161.793 184.238 167.181 180.295C172.569 176.353 176.522 170.758 178.437 164.362C180.352 157.965 180.125 151.119 177.79 144.864C185.623 142.013 192.394 136.832 197.193 130.016C201.992 123.201 204.587 115.079 204.63 106.744\" fill=\"#000\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M80.4304 87.7437L125.2 108.154L170.36 68.5837C172.647 57.1747 170.923 45.326 165.48 35.0418C160.036 24.7576 151.208 16.6692 140.487 12.1447C129.767 7.62016 117.813 6.9373 106.647 10.2116C95.4817 13.4859 85.7895 20.5163 79.2104 30.1137L71.6904 69.1137L80.4304 87.7437Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M34.1005 135.154C31.7687 146.616 33.4787 158.533 38.9397 168.877C44.4007 179.221 53.2757 187.355 64.0559 191.895C74.836 196.436 86.856 197.103 98.0722 193.783C109.288 190.463 119.009 183.36 125.581 173.684L133.031 134.844L123.031 115.844L78.1405 95.3437L34.1005 135.154Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M33.7903 57.6837L64.4903 64.9237L71.2103 30.0437C67.0362 26.8839 61.9516 25.1598 56.7165 25.1289C51.4814 25.0981 46.3769 26.7623 42.1659 29.8727C37.9549 32.9831 34.8636 37.3728 33.3539 42.3856C31.8442 47.3984 31.9973 52.7651 33.7903 57.6837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M31.1505 64.9837C24.5185 67.1748 18.727 71.3643 14.5705 76.9775C10.4141 82.5907 8.09631 89.3525 7.93527 96.3353C7.77423 103.318 9.7778 110.179 13.6711 115.978C17.5643 121.777 23.1566 126.229 29.6805 128.724L72.6805 89.8137L64.7905 72.9837L31.1505 64.9837Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M133.44 173.684C137.012 176.435 141.284 178.128 145.77 178.572C150.256 179.016 154.777 178.191 158.818 176.193C162.859 174.195 166.259 171.103 168.63 167.269C171.001 163.434 172.248 159.012 172.23 154.504C172.243 151.636 171.749 148.789 170.77 146.094L140.12 138.924L133.44 173.684Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n \u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M139.68 130.894L173.43 138.784C180.166 136.513 186.025 132.197 190.191 126.437C194.357 120.678 196.622 113.762 196.67 106.654C196.664 99.8008 194.573 93.1119 190.676 87.4751C186.779 81.8382 181.259 77.52 174.85 75.0937L130.72 113.764L139.68 130.894Z\" fill=\"#fff\"\u003e\u003c/path\u003e\n\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v2.14.0"
+ },
+ "name": "elasticsearch-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Logging",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/fabedge/v1.0.0/v1.0.0/components/Cluster.json b/server/meshmodel/fabedge/v1.0.0/v1.0.0/components/Cluster.json
new file mode 100644
index 00000000000..44043a4da91
--- /dev/null
+++ b/server/meshmodel/fabedge/v1.0.0/v1.0.0/components/Cluster.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Cluster",
+ "schema": "{\n \"description\": \"Cluster is used to represent a cluster's endpoints of connector and edge nodes\",\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"cidrs\": {\n \"description\": \"CIDRs is supposed to contain cluster-cidr and cluster-service-ip-range of a cluster, these are mainly used to create ippools to avoid SNAT in calico environment\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"endpoints\": {\n \"description\": \"Endpoints of connector and exported edge nodes of a cluster\",\n \"items\": {\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nodeSubnets\": {\n \"description\": \"internal IPs of kubernetes node\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"public UDP port for IKE communication, only used to configure remote_port. Default: 500\",\n \"type\": \"integer\"\n },\n \"publicAddresses\": {\n \"description\": \"public addresses can be IP, DNS\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"subnets\": {\n \"description\": \"pod subnets\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"Type of endpoints: Connector or EdgeNode\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"token\": {\n \"description\": \"Token is used by child cluster to access root cluster's apiserver\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Cluster\",\n \"type\": \"object\"\n}",
+ "version": "fabedge.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Cluster",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/FabEdge/helm-chart/main/fabedge/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Runtime"
+ },
+ "displayName": "Fabedge",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#0550b2",
+ "secondaryColor": "#1e62ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/FabEdge/helm-chart/main/fabedge/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"图层_1\" data-name=\"图层 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 916.9 916.9\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:url(#未命名的渐变_12);}.cls-2{fill:url(#未命名的渐变_12-2);}.cls-3{fill:url(#未命名的渐变_12-3);}.cls-4{fill:url(#未命名的渐变_21);}.cls-5{fill:url(#未命名的渐变_21-2);}.cls-6{fill:url(#未命名的渐变_12-4);}.cls-7{fill:url(#未命名的渐变_12-5);}.cls-8{fill:url(#未命名的渐变_12-6);}.cls-9{fill:url(#未命名的渐变_12-7);}.cls-10{fill:url(#未命名的渐变_12-8);}.cls-11{fill:url(#未命名的渐变_12-9);}.cls-12{fill:url(#未命名的渐变_12-10);}.cls-13{fill:url(#未命名的渐变_12-11);}.cls-14{fill:url(#未命名的渐变_12-12);}.cls-15{fill:url(#未命名的渐变_12-13);}.cls-16{fill:url(#未命名的渐变_12-14);}.cls-17{fill:url(#未命名的渐变_12-15);}.cls-18{fill:url(#未命名的渐变_12-16);}.cls-19{fill:url(#未命名的渐变_12-17);}.cls-20{fill:url(#未命名的渐变_12-18);}.cls-21{fill:url(#未命名的渐变_12-19);}.cls-22{fill:url(#未命名的渐变_12-20);}.cls-23{fill:url(#未命名的渐变_12-21);}.cls-24{fill:url(#未命名的渐变_12-22);}.cls-25{fill:url(#未命名的渐变_12-23);}.cls-26{fill:url(#未命名的渐变_12-24);}.cls-27{fill:url(#未命名的渐变_12-25);}.cls-28{fill:url(#未命名的渐变_12-26);}.cls-29{fill:url(#未命名的渐变_12-27);}.cls-30{fill:url(#未命名的渐变_12-28);}.cls-31{fill:url(#未命名的渐变_12-29);}.cls-32{fill:url(#未命名的渐变_12-30);}.cls-33{fill:url(#未命名的渐变_12-31);}.cls-34{fill:url(#未命名的渐变_12-32);}.cls-35{fill:url(#未命名的渐变_12-33);}.cls-36{fill:url(#未命名的渐变_12-34);}.cls-37{fill:url(#未命名的渐变_12-35);}\u003c/style\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12\" x1=\"205.61\" y1=\"491.18\" x2=\"706.67\" y2=\"491.18\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#48abf9\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#0084fe\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-2\" x1=\"458.59\" y1=\"337.06\" x2=\"627.21\" y2=\"337.06\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-3\" x1=\"293.25\" y1=\"350.85\" x2=\"421.63\" y2=\"350.85\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_21\" x1=\"142.63\" y1=\"500.22\" x2=\"430.46\" y2=\"500.22\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#0054d4\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#0069e7\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_21-2\" x1=\"427.78\" y1=\"421.29\" x2=\"769.64\" y2=\"421.29\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_21\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-4\" x1=\"466.91\" y1=\"620.24\" x2=\"495.53\" y2=\"620.24\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-5\" x1=\"466.91\" y1=\"690.71\" x2=\"495.53\" y2=\"690.71\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-6\" x1=\"466.91\" y1=\"761.19\" x2=\"495.77\" y2=\"761.19\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-7\" x1=\"516.93\" y1=\"761.31\" x2=\"646.63\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-8\" x1=\"667.79\" y1=\"761.31\" x2=\"696.65\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-9\" x1=\"574.8\" y1=\"615.33\" x2=\"603.43\" y2=\"615.33\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-10\" x1=\"574.8\" y1=\"678.51\" x2=\"603.67\" y2=\"678.51\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-11\" x1=\"762.18\" y1=\"678.63\" x2=\"791.27\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-12\" x1=\"805.86\" y1=\"678.51\" x2=\"834.95\" y2=\"678.51\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-13\" x1=\"715.28\" y1=\"678.63\" x2=\"744.37\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-14\" x1=\"668.38\" y1=\"678.63\" x2=\"697.47\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-15\" x1=\"621.47\" y1=\"678.63\" x2=\"650.57\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-16\" x1=\"709.41\" y1=\"761.31\" x2=\"767.87\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-17\" x1=\"849.41\" y1=\"678.63\" x2=\"907.88\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-18\" x1=\"375\" y1=\"280.85\" x2=\"403.63\" y2=\"280.85\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-19\" x1=\"375\" y1=\"236.62\" x2=\"403.63\" y2=\"236.62\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-20\" x1=\"374.76\" y1=\"192.38\" x2=\"403.63\" y2=\"192.38\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-21\" x1=\"223.91\" y1=\"192.26\" x2=\"353.6\" y2=\"192.26\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-22\" x1=\"262.34\" y1=\"328.22\" x2=\"290.96\" y2=\"328.22\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-23\" x1=\"262.1\" y1=\"284.6\" x2=\"290.96\" y2=\"284.6\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-24\" x1=\"85.97\" y1=\"284.48\" x2=\"247.13\" y2=\"284.48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-25\" x1=\"149.42\" y1=\"192.26\" x2=\"207.89\" y2=\"192.26\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-26\" x1=\"12.9\" y1=\"284.48\" x2=\"71.37\" y2=\"284.48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-27\" x1=\"487.64\" y1=\"444.79\" x2=\"524.96\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-28\" x1=\"487.64\" y1=\"486.72\" x2=\"524.96\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-29\" x1=\"534.59\" y1=\"486.72\" x2=\"571.9\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-30\" x1=\"441.14\" y1=\"444.79\" x2=\"478.46\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-31\" x1=\"441.14\" y1=\"486.72\" x2=\"478.46\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-32\" x1=\"394.73\" y1=\"444.79\" x2=\"432.04\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-33\" x1=\"394.73\" y1=\"486.72\" x2=\"432.04\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-34\" x1=\"350.07\" y1=\"486.72\" x2=\"387.39\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-35\" x1=\"487.64\" y1=\"402.86\" x2=\"524.96\" y2=\"402.86\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003c/defs\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\"\u003e未标题-1\u003c/title\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-18\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-19\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-20\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-21\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-22\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-23\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-24\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-25\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-26\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-27\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-28\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"\u003e\u003c/path\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-29\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-30\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-31\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-32\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-33\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-34\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-35\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-36\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-37\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"图层_1\" data-name=\"图层 1\" viewBox=\"0 0 916.9 916.9\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\"\u003e未标题-1\u003c/title\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"\u003e\u003c/path\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.0.0"
+ },
+ "name": "fabedge",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Cloud Native Network",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#0550b2",
+ "secondaryColor": "#1e62ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"图层_1\" data-name=\"图层 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 916.9 916.9\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:url(#未命名的渐变_12);}.cls-2{fill:url(#未命名的渐变_12-2);}.cls-3{fill:url(#未命名的渐变_12-3);}.cls-4{fill:url(#未命名的渐变_21);}.cls-5{fill:url(#未命名的渐变_21-2);}.cls-6{fill:url(#未命名的渐变_12-4);}.cls-7{fill:url(#未命名的渐变_12-5);}.cls-8{fill:url(#未命名的渐变_12-6);}.cls-9{fill:url(#未命名的渐变_12-7);}.cls-10{fill:url(#未命名的渐变_12-8);}.cls-11{fill:url(#未命名的渐变_12-9);}.cls-12{fill:url(#未命名的渐变_12-10);}.cls-13{fill:url(#未命名的渐变_12-11);}.cls-14{fill:url(#未命名的渐变_12-12);}.cls-15{fill:url(#未命名的渐变_12-13);}.cls-16{fill:url(#未命名的渐变_12-14);}.cls-17{fill:url(#未命名的渐变_12-15);}.cls-18{fill:url(#未命名的渐变_12-16);}.cls-19{fill:url(#未命名的渐变_12-17);}.cls-20{fill:url(#未命名的渐变_12-18);}.cls-21{fill:url(#未命名的渐变_12-19);}.cls-22{fill:url(#未命名的渐变_12-20);}.cls-23{fill:url(#未命名的渐变_12-21);}.cls-24{fill:url(#未命名的渐变_12-22);}.cls-25{fill:url(#未命名的渐变_12-23);}.cls-26{fill:url(#未命名的渐变_12-24);}.cls-27{fill:url(#未命名的渐变_12-25);}.cls-28{fill:url(#未命名的渐变_12-26);}.cls-29{fill:url(#未命名的渐变_12-27);}.cls-30{fill:url(#未命名的渐变_12-28);}.cls-31{fill:url(#未命名的渐变_12-29);}.cls-32{fill:url(#未命名的渐变_12-30);}.cls-33{fill:url(#未命名的渐变_12-31);}.cls-34{fill:url(#未命名的渐变_12-32);}.cls-35{fill:url(#未命名的渐变_12-33);}.cls-36{fill:url(#未命名的渐变_12-34);}.cls-37{fill:url(#未命名的渐变_12-35);}\u003c/style\u003e\u003clinearGradient id=\"未命名的渐变_12\" x1=\"205.61\" y1=\"491.18\" x2=\"706.67\" y2=\"491.18\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop offset=\"0\" stop-color=\"#48abf9\"/\u003e\u003cstop offset=\"1\" stop-color=\"#0084fe\"/\u003e\u003c/linearGradient\u003e\u003clinearGradient id=\"未命名的渐变_12-2\" x1=\"458.59\" y1=\"337.06\" x2=\"627.21\" y2=\"337.06\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-3\" x1=\"293.25\" y1=\"350.85\" x2=\"421.63\" y2=\"350.85\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_21\" x1=\"142.63\" y1=\"500.22\" x2=\"430.46\" y2=\"500.22\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop offset=\"0\" stop-color=\"#0054d4\"/\u003e\u003cstop offset=\"1\" stop-color=\"#0069e7\"/\u003e\u003c/linearGradient\u003e\u003clinearGradient id=\"未命名的渐变_21-2\" x1=\"427.78\" y1=\"421.29\" x2=\"769.64\" y2=\"421.29\" xlink:href=\"#未命名的渐变_21\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-4\" x1=\"466.91\" y1=\"620.24\" x2=\"495.53\" y2=\"620.24\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-5\" x1=\"466.91\" y1=\"690.71\" x2=\"495.53\" y2=\"690.71\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-6\" x1=\"466.91\" y1=\"761.19\" x2=\"495.77\" y2=\"761.19\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-7\" x1=\"516.93\" y1=\"761.31\" x2=\"646.63\" y2=\"761.31\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-8\" x1=\"667.79\" y1=\"761.31\" x2=\"696.65\" y2=\"761.31\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-9\" x1=\"574.8\" y1=\"615.33\" x2=\"603.43\" y2=\"615.33\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-10\" x1=\"574.8\" y1=\"678.51\" x2=\"603.67\" y2=\"678.51\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-11\" x1=\"762.18\" y1=\"678.63\" x2=\"791.27\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-12\" x1=\"805.86\" y1=\"678.51\" x2=\"834.95\" y2=\"678.51\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-13\" x1=\"715.28\" y1=\"678.63\" x2=\"744.37\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-14\" x1=\"668.38\" y1=\"678.63\" x2=\"697.47\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-15\" x1=\"621.47\" y1=\"678.63\" x2=\"650.57\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-16\" x1=\"709.41\" y1=\"761.31\" x2=\"767.87\" y2=\"761.31\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-17\" x1=\"849.41\" y1=\"678.63\" x2=\"907.88\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-18\" x1=\"375\" y1=\"280.85\" x2=\"403.63\" y2=\"280.85\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-19\" x1=\"375\" y1=\"236.62\" x2=\"403.63\" y2=\"236.62\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-20\" x1=\"374.76\" y1=\"192.38\" x2=\"403.63\" y2=\"192.38\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-21\" x1=\"223.91\" y1=\"192.26\" x2=\"353.6\" y2=\"192.26\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-22\" x1=\"262.34\" y1=\"328.22\" x2=\"290.96\" y2=\"328.22\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-23\" x1=\"262.1\" y1=\"284.6\" x2=\"290.96\" y2=\"284.6\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-24\" x1=\"85.97\" y1=\"284.48\" x2=\"247.13\" y2=\"284.48\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-25\" x1=\"149.42\" y1=\"192.26\" x2=\"207.89\" y2=\"192.26\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-26\" x1=\"12.9\" y1=\"284.48\" x2=\"71.37\" y2=\"284.48\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-27\" x1=\"487.64\" y1=\"444.79\" x2=\"524.96\" y2=\"444.79\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-28\" x1=\"487.64\" y1=\"486.72\" x2=\"524.96\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-29\" x1=\"534.59\" y1=\"486.72\" x2=\"571.9\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-30\" x1=\"441.14\" y1=\"444.79\" x2=\"478.46\" y2=\"444.79\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-31\" x1=\"441.14\" y1=\"486.72\" x2=\"478.46\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-32\" x1=\"394.73\" y1=\"444.79\" x2=\"432.04\" y2=\"444.79\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-33\" x1=\"394.73\" y1=\"486.72\" x2=\"432.04\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-34\" x1=\"350.07\" y1=\"486.72\" x2=\"387.39\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-35\" x1=\"487.64\" y1=\"402.86\" x2=\"524.96\" y2=\"402.86\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003c/defs\u003e\u003ctitle\u003e未标题-1\u003c/title\u003e\u003cpath class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"/\u003e\u003cpath class=\"cls-3\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"/\u003e\u003cpath d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"/\u003e\u003cpath class=\"cls-4\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"/\u003e\u003cpath d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"/\u003e\u003cpath d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"/\u003e\u003cpath class=\"cls-5\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"/\u003e\u003cpath class=\"cls-6\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"/\u003e\u003cpath class=\"cls-7\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"/\u003e\u003cpath class=\"cls-8\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"/\u003e\u003cpath class=\"cls-9\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-10\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-11\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"/\u003e\u003cpath class=\"cls-12\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"/\u003e\u003cpath class=\"cls-13\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-14\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-15\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-16\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-17\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-18\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"/\u003e\u003cpath class=\"cls-19\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"/\u003e\u003cpath class=\"cls-20\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"/\u003e\u003cpath class=\"cls-21\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"/\u003e\u003cpath class=\"cls-22\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"/\u003e\u003cpath class=\"cls-23\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-24\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"/\u003e\u003cpath class=\"cls-25\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"/\u003e\u003cpath class=\"cls-26\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-27\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"/\u003e\u003cpath class=\"cls-28\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"/\u003e\u003crect class=\"cls-29\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-30\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-31\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-32\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-33\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-34\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-35\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-36\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-37\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"图层_1\" data-name=\"图层 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 916.9 916.9\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003e未标题-1\u003c/title\u003e\u003cpath class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"/\u003e\u003crect class=\"cls-1\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/fabedge/v1.0.0/v1.0.0/components/Community.json b/server/meshmodel/fabedge/v1.0.0/v1.0.0/components/Community.json
new file mode 100644
index 00000000000..f7e752b2d24
--- /dev/null
+++ b/server/meshmodel/fabedge/v1.0.0/v1.0.0/components/Community.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Community",
+ "schema": "{\n \"description\": \"Community is used to manage a communication unit, it's members should be edge nodes\",\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"members\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Community\",\n \"type\": \"object\"\n}",
+ "version": "fabedge.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Community",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": false,
+ "published": false,
+ "source_uri": "git://github.com/FabEdge/helm-chart/main/fabedge/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Runtime"
+ },
+ "displayName": "Fabedge",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#0550b2",
+ "secondaryColor": "#1e62ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/FabEdge/helm-chart/main/fabedge/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"图层_1\" data-name=\"图层 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 916.9 916.9\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:url(#未命名的渐变_12);}.cls-2{fill:url(#未命名的渐变_12-2);}.cls-3{fill:url(#未命名的渐变_12-3);}.cls-4{fill:url(#未命名的渐变_21);}.cls-5{fill:url(#未命名的渐变_21-2);}.cls-6{fill:url(#未命名的渐变_12-4);}.cls-7{fill:url(#未命名的渐变_12-5);}.cls-8{fill:url(#未命名的渐变_12-6);}.cls-9{fill:url(#未命名的渐变_12-7);}.cls-10{fill:url(#未命名的渐变_12-8);}.cls-11{fill:url(#未命名的渐变_12-9);}.cls-12{fill:url(#未命名的渐变_12-10);}.cls-13{fill:url(#未命名的渐变_12-11);}.cls-14{fill:url(#未命名的渐变_12-12);}.cls-15{fill:url(#未命名的渐变_12-13);}.cls-16{fill:url(#未命名的渐变_12-14);}.cls-17{fill:url(#未命名的渐变_12-15);}.cls-18{fill:url(#未命名的渐变_12-16);}.cls-19{fill:url(#未命名的渐变_12-17);}.cls-20{fill:url(#未命名的渐变_12-18);}.cls-21{fill:url(#未命名的渐变_12-19);}.cls-22{fill:url(#未命名的渐变_12-20);}.cls-23{fill:url(#未命名的渐变_12-21);}.cls-24{fill:url(#未命名的渐变_12-22);}.cls-25{fill:url(#未命名的渐变_12-23);}.cls-26{fill:url(#未命名的渐变_12-24);}.cls-27{fill:url(#未命名的渐变_12-25);}.cls-28{fill:url(#未命名的渐变_12-26);}.cls-29{fill:url(#未命名的渐变_12-27);}.cls-30{fill:url(#未命名的渐变_12-28);}.cls-31{fill:url(#未命名的渐变_12-29);}.cls-32{fill:url(#未命名的渐变_12-30);}.cls-33{fill:url(#未命名的渐变_12-31);}.cls-34{fill:url(#未命名的渐变_12-32);}.cls-35{fill:url(#未命名的渐变_12-33);}.cls-36{fill:url(#未命名的渐变_12-34);}.cls-37{fill:url(#未命名的渐变_12-35);}\u003c/style\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12\" x1=\"205.61\" y1=\"491.18\" x2=\"706.67\" y2=\"491.18\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#48abf9\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#0084fe\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-2\" x1=\"458.59\" y1=\"337.06\" x2=\"627.21\" y2=\"337.06\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-3\" x1=\"293.25\" y1=\"350.85\" x2=\"421.63\" y2=\"350.85\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_21\" x1=\"142.63\" y1=\"500.22\" x2=\"430.46\" y2=\"500.22\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#0054d4\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#0069e7\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_21-2\" x1=\"427.78\" y1=\"421.29\" x2=\"769.64\" y2=\"421.29\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_21\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-4\" x1=\"466.91\" y1=\"620.24\" x2=\"495.53\" y2=\"620.24\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-5\" x1=\"466.91\" y1=\"690.71\" x2=\"495.53\" y2=\"690.71\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-6\" x1=\"466.91\" y1=\"761.19\" x2=\"495.77\" y2=\"761.19\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-7\" x1=\"516.93\" y1=\"761.31\" x2=\"646.63\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-8\" x1=\"667.79\" y1=\"761.31\" x2=\"696.65\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-9\" x1=\"574.8\" y1=\"615.33\" x2=\"603.43\" y2=\"615.33\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-10\" x1=\"574.8\" y1=\"678.51\" x2=\"603.67\" y2=\"678.51\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-11\" x1=\"762.18\" y1=\"678.63\" x2=\"791.27\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-12\" x1=\"805.86\" y1=\"678.51\" x2=\"834.95\" y2=\"678.51\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-13\" x1=\"715.28\" y1=\"678.63\" x2=\"744.37\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-14\" x1=\"668.38\" y1=\"678.63\" x2=\"697.47\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-15\" x1=\"621.47\" y1=\"678.63\" x2=\"650.57\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-16\" x1=\"709.41\" y1=\"761.31\" x2=\"767.87\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-17\" x1=\"849.41\" y1=\"678.63\" x2=\"907.88\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-18\" x1=\"375\" y1=\"280.85\" x2=\"403.63\" y2=\"280.85\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-19\" x1=\"375\" y1=\"236.62\" x2=\"403.63\" y2=\"236.62\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-20\" x1=\"374.76\" y1=\"192.38\" x2=\"403.63\" y2=\"192.38\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-21\" x1=\"223.91\" y1=\"192.26\" x2=\"353.6\" y2=\"192.26\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-22\" x1=\"262.34\" y1=\"328.22\" x2=\"290.96\" y2=\"328.22\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-23\" x1=\"262.1\" y1=\"284.6\" x2=\"290.96\" y2=\"284.6\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-24\" x1=\"85.97\" y1=\"284.48\" x2=\"247.13\" y2=\"284.48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-25\" x1=\"149.42\" y1=\"192.26\" x2=\"207.89\" y2=\"192.26\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-26\" x1=\"12.9\" y1=\"284.48\" x2=\"71.37\" y2=\"284.48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-27\" x1=\"487.64\" y1=\"444.79\" x2=\"524.96\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-28\" x1=\"487.64\" y1=\"486.72\" x2=\"524.96\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-29\" x1=\"534.59\" y1=\"486.72\" x2=\"571.9\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-30\" x1=\"441.14\" y1=\"444.79\" x2=\"478.46\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-31\" x1=\"441.14\" y1=\"486.72\" x2=\"478.46\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-32\" x1=\"394.73\" y1=\"444.79\" x2=\"432.04\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-33\" x1=\"394.73\" y1=\"486.72\" x2=\"432.04\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-34\" x1=\"350.07\" y1=\"486.72\" x2=\"387.39\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-35\" x1=\"487.64\" y1=\"402.86\" x2=\"524.96\" y2=\"402.86\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003c/defs\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\"\u003e未标题-1\u003c/title\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-18\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-19\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-20\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-21\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-22\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-23\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-24\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-25\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-26\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-27\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-28\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"\u003e\u003c/path\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-29\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-30\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-31\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-32\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-33\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-34\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-35\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-36\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-37\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"图层_1\" data-name=\"图层 1\" viewBox=\"0 0 916.9 916.9\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\"\u003e未标题-1\u003c/title\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"\u003e\u003c/path\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.0.0"
+ },
+ "name": "fabedge",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Cloud Native Network",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#0550b2",
+ "secondaryColor": "#1e62ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"图层_1\" data-name=\"图层 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 916.9 916.9\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:url(#未命名的渐变_12);}.cls-2{fill:url(#未命名的渐变_12-2);}.cls-3{fill:url(#未命名的渐变_12-3);}.cls-4{fill:url(#未命名的渐变_21);}.cls-5{fill:url(#未命名的渐变_21-2);}.cls-6{fill:url(#未命名的渐变_12-4);}.cls-7{fill:url(#未命名的渐变_12-5);}.cls-8{fill:url(#未命名的渐变_12-6);}.cls-9{fill:url(#未命名的渐变_12-7);}.cls-10{fill:url(#未命名的渐变_12-8);}.cls-11{fill:url(#未命名的渐变_12-9);}.cls-12{fill:url(#未命名的渐变_12-10);}.cls-13{fill:url(#未命名的渐变_12-11);}.cls-14{fill:url(#未命名的渐变_12-12);}.cls-15{fill:url(#未命名的渐变_12-13);}.cls-16{fill:url(#未命名的渐变_12-14);}.cls-17{fill:url(#未命名的渐变_12-15);}.cls-18{fill:url(#未命名的渐变_12-16);}.cls-19{fill:url(#未命名的渐变_12-17);}.cls-20{fill:url(#未命名的渐变_12-18);}.cls-21{fill:url(#未命名的渐变_12-19);}.cls-22{fill:url(#未命名的渐变_12-20);}.cls-23{fill:url(#未命名的渐变_12-21);}.cls-24{fill:url(#未命名的渐变_12-22);}.cls-25{fill:url(#未命名的渐变_12-23);}.cls-26{fill:url(#未命名的渐变_12-24);}.cls-27{fill:url(#未命名的渐变_12-25);}.cls-28{fill:url(#未命名的渐变_12-26);}.cls-29{fill:url(#未命名的渐变_12-27);}.cls-30{fill:url(#未命名的渐变_12-28);}.cls-31{fill:url(#未命名的渐变_12-29);}.cls-32{fill:url(#未命名的渐变_12-30);}.cls-33{fill:url(#未命名的渐变_12-31);}.cls-34{fill:url(#未命名的渐变_12-32);}.cls-35{fill:url(#未命名的渐变_12-33);}.cls-36{fill:url(#未命名的渐变_12-34);}.cls-37{fill:url(#未命名的渐变_12-35);}\u003c/style\u003e\u003clinearGradient id=\"未命名的渐变_12\" x1=\"205.61\" y1=\"491.18\" x2=\"706.67\" y2=\"491.18\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop offset=\"0\" stop-color=\"#48abf9\"/\u003e\u003cstop offset=\"1\" stop-color=\"#0084fe\"/\u003e\u003c/linearGradient\u003e\u003clinearGradient id=\"未命名的渐变_12-2\" x1=\"458.59\" y1=\"337.06\" x2=\"627.21\" y2=\"337.06\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-3\" x1=\"293.25\" y1=\"350.85\" x2=\"421.63\" y2=\"350.85\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_21\" x1=\"142.63\" y1=\"500.22\" x2=\"430.46\" y2=\"500.22\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop offset=\"0\" stop-color=\"#0054d4\"/\u003e\u003cstop offset=\"1\" stop-color=\"#0069e7\"/\u003e\u003c/linearGradient\u003e\u003clinearGradient id=\"未命名的渐变_21-2\" x1=\"427.78\" y1=\"421.29\" x2=\"769.64\" y2=\"421.29\" xlink:href=\"#未命名的渐变_21\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-4\" x1=\"466.91\" y1=\"620.24\" x2=\"495.53\" y2=\"620.24\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-5\" x1=\"466.91\" y1=\"690.71\" x2=\"495.53\" y2=\"690.71\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-6\" x1=\"466.91\" y1=\"761.19\" x2=\"495.77\" y2=\"761.19\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-7\" x1=\"516.93\" y1=\"761.31\" x2=\"646.63\" y2=\"761.31\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-8\" x1=\"667.79\" y1=\"761.31\" x2=\"696.65\" y2=\"761.31\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-9\" x1=\"574.8\" y1=\"615.33\" x2=\"603.43\" y2=\"615.33\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-10\" x1=\"574.8\" y1=\"678.51\" x2=\"603.67\" y2=\"678.51\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-11\" x1=\"762.18\" y1=\"678.63\" x2=\"791.27\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-12\" x1=\"805.86\" y1=\"678.51\" x2=\"834.95\" y2=\"678.51\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-13\" x1=\"715.28\" y1=\"678.63\" x2=\"744.37\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-14\" x1=\"668.38\" y1=\"678.63\" x2=\"697.47\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-15\" x1=\"621.47\" y1=\"678.63\" x2=\"650.57\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-16\" x1=\"709.41\" y1=\"761.31\" x2=\"767.87\" y2=\"761.31\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-17\" x1=\"849.41\" y1=\"678.63\" x2=\"907.88\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-18\" x1=\"375\" y1=\"280.85\" x2=\"403.63\" y2=\"280.85\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-19\" x1=\"375\" y1=\"236.62\" x2=\"403.63\" y2=\"236.62\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-20\" x1=\"374.76\" y1=\"192.38\" x2=\"403.63\" y2=\"192.38\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-21\" x1=\"223.91\" y1=\"192.26\" x2=\"353.6\" y2=\"192.26\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-22\" x1=\"262.34\" y1=\"328.22\" x2=\"290.96\" y2=\"328.22\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-23\" x1=\"262.1\" y1=\"284.6\" x2=\"290.96\" y2=\"284.6\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-24\" x1=\"85.97\" y1=\"284.48\" x2=\"247.13\" y2=\"284.48\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-25\" x1=\"149.42\" y1=\"192.26\" x2=\"207.89\" y2=\"192.26\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-26\" x1=\"12.9\" y1=\"284.48\" x2=\"71.37\" y2=\"284.48\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-27\" x1=\"487.64\" y1=\"444.79\" x2=\"524.96\" y2=\"444.79\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-28\" x1=\"487.64\" y1=\"486.72\" x2=\"524.96\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-29\" x1=\"534.59\" y1=\"486.72\" x2=\"571.9\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-30\" x1=\"441.14\" y1=\"444.79\" x2=\"478.46\" y2=\"444.79\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-31\" x1=\"441.14\" y1=\"486.72\" x2=\"478.46\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-32\" x1=\"394.73\" y1=\"444.79\" x2=\"432.04\" y2=\"444.79\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-33\" x1=\"394.73\" y1=\"486.72\" x2=\"432.04\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-34\" x1=\"350.07\" y1=\"486.72\" x2=\"387.39\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-35\" x1=\"487.64\" y1=\"402.86\" x2=\"524.96\" y2=\"402.86\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003c/defs\u003e\u003ctitle\u003e未标题-1\u003c/title\u003e\u003cpath class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"/\u003e\u003cpath class=\"cls-3\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"/\u003e\u003cpath d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"/\u003e\u003cpath class=\"cls-4\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"/\u003e\u003cpath d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"/\u003e\u003cpath d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"/\u003e\u003cpath class=\"cls-5\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"/\u003e\u003cpath class=\"cls-6\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"/\u003e\u003cpath class=\"cls-7\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"/\u003e\u003cpath class=\"cls-8\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"/\u003e\u003cpath class=\"cls-9\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-10\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-11\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"/\u003e\u003cpath class=\"cls-12\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"/\u003e\u003cpath class=\"cls-13\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-14\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-15\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-16\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-17\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-18\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"/\u003e\u003cpath class=\"cls-19\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"/\u003e\u003cpath class=\"cls-20\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"/\u003e\u003cpath class=\"cls-21\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"/\u003e\u003cpath class=\"cls-22\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"/\u003e\u003cpath class=\"cls-23\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-24\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"/\u003e\u003cpath class=\"cls-25\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"/\u003e\u003cpath class=\"cls-26\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-27\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"/\u003e\u003cpath class=\"cls-28\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"/\u003e\u003crect class=\"cls-29\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-30\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-31\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-32\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-33\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-34\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-35\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-36\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-37\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"图层_1\" data-name=\"图层 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 916.9 916.9\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003e未标题-1\u003c/title\u003e\u003cpath class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"/\u003e\u003crect class=\"cls-1\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/fabedge/v1.0.0/v1.0.0/components/GlobalService.json b/server/meshmodel/fabedge/v1.0.0/v1.0.0/components/GlobalService.json
new file mode 100644
index 00000000000..b32348f2d83
--- /dev/null
+++ b/server/meshmodel/fabedge/v1.0.0/v1.0.0/components/GlobalService.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "GlobalService",
+ "schema": "{\n \"description\": \"GlobalService is used to represent a service which can be accessed through multi-clusters A global services' endpoints can be services if its type is ClusterIP or pods if its type is Headless\",\n \"properties\": {\n \"spec\": {\n \"description\": \"GlobalServiceSpec describes global service and the information necessary to consume it.\",\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"description\": \"Endpoint represents a single logical \\\"backend\\\" implementing a service.\",\n \"properties\": {\n \"addresses\": {\n \"description\": \"addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"set\"\n },\n \"cluster\": {\n \"description\": \"Cluster indicates the cluster where an endpoint is located\",\n \"type\": \"string\"\n },\n \"hostname\": {\n \"description\": \"hostname of this endpoint. This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"Region indicates the region where the endpoint is located\",\n \"type\": \"string\"\n },\n \"targetRef\": {\n \"description\": \"targetRef is a reference to a Kubernetes object that represents this endpoint.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"API version of the referent.\",\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"description\": \"If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered the event) or if no container name is specified \\\"spec.containers[2]\\\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n \"type\": \"string\"\n },\n \"resourceVersion\": {\n \"description\": \"Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n \"type\": \"string\"\n },\n \"uid\": {\n \"description\": \"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"zone\": {\n \"description\": \"Zone indicates the zone where the endpoint is located\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"addresses\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"ports\": {\n \"items\": {\n \"description\": \"ServicePort represents the port on which the service is exposed\",\n \"properties\": {\n \"appProtocol\": {\n \"description\": \"The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol. Field can be enabled with ServiceAppProtocol feature gate.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"The port that will be exposed by this service.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"default\": \"TCP\",\n \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\". Default is TCP.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"Type represents the type of services which are the backends of a global service Must be ClusterIP or Headless\",\n \"enum\": [\n \"ClusterIP\",\n \"Headless\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Global Service\",\n \"type\": \"object\"\n}",
+ "version": "dns.fabedge.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Global Service",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/FabEdge/helm-chart/main/fabedge/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Runtime"
+ },
+ "displayName": "Fabedge",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#0550b2",
+ "secondaryColor": "#1e62ba",
+ "shape": "circle",
+ "source_uri": "git://github.com/FabEdge/helm-chart/main/fabedge/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"图层_1\" data-name=\"图层 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 916.9 916.9\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:url(#未命名的渐变_12);}.cls-2{fill:url(#未命名的渐变_12-2);}.cls-3{fill:url(#未命名的渐变_12-3);}.cls-4{fill:url(#未命名的渐变_21);}.cls-5{fill:url(#未命名的渐变_21-2);}.cls-6{fill:url(#未命名的渐变_12-4);}.cls-7{fill:url(#未命名的渐变_12-5);}.cls-8{fill:url(#未命名的渐变_12-6);}.cls-9{fill:url(#未命名的渐变_12-7);}.cls-10{fill:url(#未命名的渐变_12-8);}.cls-11{fill:url(#未命名的渐变_12-9);}.cls-12{fill:url(#未命名的渐变_12-10);}.cls-13{fill:url(#未命名的渐变_12-11);}.cls-14{fill:url(#未命名的渐变_12-12);}.cls-15{fill:url(#未命名的渐变_12-13);}.cls-16{fill:url(#未命名的渐变_12-14);}.cls-17{fill:url(#未命名的渐变_12-15);}.cls-18{fill:url(#未命名的渐变_12-16);}.cls-19{fill:url(#未命名的渐变_12-17);}.cls-20{fill:url(#未命名的渐变_12-18);}.cls-21{fill:url(#未命名的渐变_12-19);}.cls-22{fill:url(#未命名的渐变_12-20);}.cls-23{fill:url(#未命名的渐变_12-21);}.cls-24{fill:url(#未命名的渐变_12-22);}.cls-25{fill:url(#未命名的渐变_12-23);}.cls-26{fill:url(#未命名的渐变_12-24);}.cls-27{fill:url(#未命名的渐变_12-25);}.cls-28{fill:url(#未命名的渐变_12-26);}.cls-29{fill:url(#未命名的渐变_12-27);}.cls-30{fill:url(#未命名的渐变_12-28);}.cls-31{fill:url(#未命名的渐变_12-29);}.cls-32{fill:url(#未命名的渐变_12-30);}.cls-33{fill:url(#未命名的渐变_12-31);}.cls-34{fill:url(#未命名的渐变_12-32);}.cls-35{fill:url(#未命名的渐变_12-33);}.cls-36{fill:url(#未命名的渐变_12-34);}.cls-37{fill:url(#未命名的渐变_12-35);}\u003c/style\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12\" x1=\"205.61\" y1=\"491.18\" x2=\"706.67\" y2=\"491.18\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#48abf9\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#0084fe\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-2\" x1=\"458.59\" y1=\"337.06\" x2=\"627.21\" y2=\"337.06\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-3\" x1=\"293.25\" y1=\"350.85\" x2=\"421.63\" y2=\"350.85\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_21\" x1=\"142.63\" y1=\"500.22\" x2=\"430.46\" y2=\"500.22\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#0054d4\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#0069e7\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_21-2\" x1=\"427.78\" y1=\"421.29\" x2=\"769.64\" y2=\"421.29\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_21\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-4\" x1=\"466.91\" y1=\"620.24\" x2=\"495.53\" y2=\"620.24\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-5\" x1=\"466.91\" y1=\"690.71\" x2=\"495.53\" y2=\"690.71\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-6\" x1=\"466.91\" y1=\"761.19\" x2=\"495.77\" y2=\"761.19\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-7\" x1=\"516.93\" y1=\"761.31\" x2=\"646.63\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-8\" x1=\"667.79\" y1=\"761.31\" x2=\"696.65\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-9\" x1=\"574.8\" y1=\"615.33\" x2=\"603.43\" y2=\"615.33\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-10\" x1=\"574.8\" y1=\"678.51\" x2=\"603.67\" y2=\"678.51\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-11\" x1=\"762.18\" y1=\"678.63\" x2=\"791.27\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-12\" x1=\"805.86\" y1=\"678.51\" x2=\"834.95\" y2=\"678.51\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-13\" x1=\"715.28\" y1=\"678.63\" x2=\"744.37\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-14\" x1=\"668.38\" y1=\"678.63\" x2=\"697.47\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-15\" x1=\"621.47\" y1=\"678.63\" x2=\"650.57\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-16\" x1=\"709.41\" y1=\"761.31\" x2=\"767.87\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-17\" x1=\"849.41\" y1=\"678.63\" x2=\"907.88\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-18\" x1=\"375\" y1=\"280.85\" x2=\"403.63\" y2=\"280.85\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-19\" x1=\"375\" y1=\"236.62\" x2=\"403.63\" y2=\"236.62\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-20\" x1=\"374.76\" y1=\"192.38\" x2=\"403.63\" y2=\"192.38\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-21\" x1=\"223.91\" y1=\"192.26\" x2=\"353.6\" y2=\"192.26\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-22\" x1=\"262.34\" y1=\"328.22\" x2=\"290.96\" y2=\"328.22\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-23\" x1=\"262.1\" y1=\"284.6\" x2=\"290.96\" y2=\"284.6\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-24\" x1=\"85.97\" y1=\"284.48\" x2=\"247.13\" y2=\"284.48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-25\" x1=\"149.42\" y1=\"192.26\" x2=\"207.89\" y2=\"192.26\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-26\" x1=\"12.9\" y1=\"284.48\" x2=\"71.37\" y2=\"284.48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-27\" x1=\"487.64\" y1=\"444.79\" x2=\"524.96\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-28\" x1=\"487.64\" y1=\"486.72\" x2=\"524.96\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-29\" x1=\"534.59\" y1=\"486.72\" x2=\"571.9\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-30\" x1=\"441.14\" y1=\"444.79\" x2=\"478.46\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-31\" x1=\"441.14\" y1=\"486.72\" x2=\"478.46\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-32\" x1=\"394.73\" y1=\"444.79\" x2=\"432.04\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-33\" x1=\"394.73\" y1=\"486.72\" x2=\"432.04\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-34\" x1=\"350.07\" y1=\"486.72\" x2=\"387.39\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-35\" x1=\"487.64\" y1=\"402.86\" x2=\"524.96\" y2=\"402.86\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003c/defs\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\"\u003e未标题-1\u003c/title\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-18\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-19\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-20\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-21\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-22\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-23\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-24\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-25\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-26\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-27\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-28\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"\u003e\u003c/path\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-29\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-30\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-31\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-32\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-33\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-34\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-35\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-36\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-37\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"图层_1\" data-name=\"图层 1\" viewBox=\"0 0 916.9 916.9\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\"\u003e未标题-1\u003c/title\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"\u003e\u003c/path\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.0.0"
+ },
+ "name": "fabedge",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Cloud Native Network",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#0550b2",
+ "secondaryColor": "#1e62ba",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"图层_1\" data-name=\"图层 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 916.9 916.9\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:url(#未命名的渐变_12);}.cls-2{fill:url(#未命名的渐变_12-2);}.cls-3{fill:url(#未命名的渐变_12-3);}.cls-4{fill:url(#未命名的渐变_21);}.cls-5{fill:url(#未命名的渐变_21-2);}.cls-6{fill:url(#未命名的渐变_12-4);}.cls-7{fill:url(#未命名的渐变_12-5);}.cls-8{fill:url(#未命名的渐变_12-6);}.cls-9{fill:url(#未命名的渐变_12-7);}.cls-10{fill:url(#未命名的渐变_12-8);}.cls-11{fill:url(#未命名的渐变_12-9);}.cls-12{fill:url(#未命名的渐变_12-10);}.cls-13{fill:url(#未命名的渐变_12-11);}.cls-14{fill:url(#未命名的渐变_12-12);}.cls-15{fill:url(#未命名的渐变_12-13);}.cls-16{fill:url(#未命名的渐变_12-14);}.cls-17{fill:url(#未命名的渐变_12-15);}.cls-18{fill:url(#未命名的渐变_12-16);}.cls-19{fill:url(#未命名的渐变_12-17);}.cls-20{fill:url(#未命名的渐变_12-18);}.cls-21{fill:url(#未命名的渐变_12-19);}.cls-22{fill:url(#未命名的渐变_12-20);}.cls-23{fill:url(#未命名的渐变_12-21);}.cls-24{fill:url(#未命名的渐变_12-22);}.cls-25{fill:url(#未命名的渐变_12-23);}.cls-26{fill:url(#未命名的渐变_12-24);}.cls-27{fill:url(#未命名的渐变_12-25);}.cls-28{fill:url(#未命名的渐变_12-26);}.cls-29{fill:url(#未命名的渐变_12-27);}.cls-30{fill:url(#未命名的渐变_12-28);}.cls-31{fill:url(#未命名的渐变_12-29);}.cls-32{fill:url(#未命名的渐变_12-30);}.cls-33{fill:url(#未命名的渐变_12-31);}.cls-34{fill:url(#未命名的渐变_12-32);}.cls-35{fill:url(#未命名的渐变_12-33);}.cls-36{fill:url(#未命名的渐变_12-34);}.cls-37{fill:url(#未命名的渐变_12-35);}\u003c/style\u003e\u003clinearGradient id=\"未命名的渐变_12\" x1=\"205.61\" y1=\"491.18\" x2=\"706.67\" y2=\"491.18\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop offset=\"0\" stop-color=\"#48abf9\"/\u003e\u003cstop offset=\"1\" stop-color=\"#0084fe\"/\u003e\u003c/linearGradient\u003e\u003clinearGradient id=\"未命名的渐变_12-2\" x1=\"458.59\" y1=\"337.06\" x2=\"627.21\" y2=\"337.06\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-3\" x1=\"293.25\" y1=\"350.85\" x2=\"421.63\" y2=\"350.85\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_21\" x1=\"142.63\" y1=\"500.22\" x2=\"430.46\" y2=\"500.22\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop offset=\"0\" stop-color=\"#0054d4\"/\u003e\u003cstop offset=\"1\" stop-color=\"#0069e7\"/\u003e\u003c/linearGradient\u003e\u003clinearGradient id=\"未命名的渐变_21-2\" x1=\"427.78\" y1=\"421.29\" x2=\"769.64\" y2=\"421.29\" xlink:href=\"#未命名的渐变_21\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-4\" x1=\"466.91\" y1=\"620.24\" x2=\"495.53\" y2=\"620.24\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-5\" x1=\"466.91\" y1=\"690.71\" x2=\"495.53\" y2=\"690.71\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-6\" x1=\"466.91\" y1=\"761.19\" x2=\"495.77\" y2=\"761.19\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-7\" x1=\"516.93\" y1=\"761.31\" x2=\"646.63\" y2=\"761.31\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-8\" x1=\"667.79\" y1=\"761.31\" x2=\"696.65\" y2=\"761.31\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-9\" x1=\"574.8\" y1=\"615.33\" x2=\"603.43\" y2=\"615.33\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-10\" x1=\"574.8\" y1=\"678.51\" x2=\"603.67\" y2=\"678.51\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-11\" x1=\"762.18\" y1=\"678.63\" x2=\"791.27\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-12\" x1=\"805.86\" y1=\"678.51\" x2=\"834.95\" y2=\"678.51\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-13\" x1=\"715.28\" y1=\"678.63\" x2=\"744.37\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-14\" x1=\"668.38\" y1=\"678.63\" x2=\"697.47\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-15\" x1=\"621.47\" y1=\"678.63\" x2=\"650.57\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-16\" x1=\"709.41\" y1=\"761.31\" x2=\"767.87\" y2=\"761.31\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-17\" x1=\"849.41\" y1=\"678.63\" x2=\"907.88\" y2=\"678.63\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-18\" x1=\"375\" y1=\"280.85\" x2=\"403.63\" y2=\"280.85\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-19\" x1=\"375\" y1=\"236.62\" x2=\"403.63\" y2=\"236.62\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-20\" x1=\"374.76\" y1=\"192.38\" x2=\"403.63\" y2=\"192.38\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-21\" x1=\"223.91\" y1=\"192.26\" x2=\"353.6\" y2=\"192.26\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-22\" x1=\"262.34\" y1=\"328.22\" x2=\"290.96\" y2=\"328.22\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-23\" x1=\"262.1\" y1=\"284.6\" x2=\"290.96\" y2=\"284.6\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-24\" x1=\"85.97\" y1=\"284.48\" x2=\"247.13\" y2=\"284.48\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-25\" x1=\"149.42\" y1=\"192.26\" x2=\"207.89\" y2=\"192.26\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-26\" x1=\"12.9\" y1=\"284.48\" x2=\"71.37\" y2=\"284.48\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-27\" x1=\"487.64\" y1=\"444.79\" x2=\"524.96\" y2=\"444.79\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-28\" x1=\"487.64\" y1=\"486.72\" x2=\"524.96\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-29\" x1=\"534.59\" y1=\"486.72\" x2=\"571.9\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-30\" x1=\"441.14\" y1=\"444.79\" x2=\"478.46\" y2=\"444.79\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-31\" x1=\"441.14\" y1=\"486.72\" x2=\"478.46\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-32\" x1=\"394.73\" y1=\"444.79\" x2=\"432.04\" y2=\"444.79\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-33\" x1=\"394.73\" y1=\"486.72\" x2=\"432.04\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-34\" x1=\"350.07\" y1=\"486.72\" x2=\"387.39\" y2=\"486.72\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003clinearGradient id=\"未命名的渐变_12-35\" x1=\"487.64\" y1=\"402.86\" x2=\"524.96\" y2=\"402.86\" xlink:href=\"#未命名的渐变_12\"/\u003e\u003c/defs\u003e\u003ctitle\u003e未标题-1\u003c/title\u003e\u003cpath class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"/\u003e\u003cpath class=\"cls-3\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"/\u003e\u003cpath d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"/\u003e\u003cpath class=\"cls-4\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"/\u003e\u003cpath d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"/\u003e\u003cpath d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"/\u003e\u003cpath class=\"cls-5\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"/\u003e\u003cpath class=\"cls-6\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"/\u003e\u003cpath class=\"cls-7\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"/\u003e\u003cpath class=\"cls-8\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"/\u003e\u003cpath class=\"cls-9\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-10\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-11\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"/\u003e\u003cpath class=\"cls-12\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"/\u003e\u003cpath class=\"cls-13\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-14\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-15\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-16\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-17\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-18\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"/\u003e\u003cpath class=\"cls-19\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"/\u003e\u003cpath class=\"cls-20\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"/\u003e\u003cpath class=\"cls-21\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"/\u003e\u003cpath class=\"cls-22\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"/\u003e\u003cpath class=\"cls-23\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-24\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"/\u003e\u003cpath class=\"cls-25\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"/\u003e\u003cpath class=\"cls-26\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-27\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"/\u003e\u003cpath class=\"cls-28\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"/\u003e\u003crect class=\"cls-29\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-30\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-31\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-32\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-33\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-34\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-35\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-36\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-37\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg id=\"图层_1\" data-name=\"图层 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 916.9 916.9\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003ctitle\u003e未标题-1\u003c/title\u003e\u003cpath class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"/\u003e\u003crect class=\"cls-1\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"/\u003e\u003crect class=\"cls-1\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/fabedge/v1.0.0/v1.0.0/model.json b/server/meshmodel/fabedge/v1.0.0/v1.0.0/model.json
new file mode 100644
index 00000000000..9056365c4cb
--- /dev/null
+++ b/server/meshmodel/fabedge/v1.0.0/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Runtime"
+ },
+ "displayName": "Fabedge",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#0550b2",
+ "secondaryColor": "#1e62ba",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"图层_1\" data-name=\"图层 1\" xmlns:_xmlns=\"xmlns\" _xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 916.9 916.9\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:url(#未命名的渐变_12);}.cls-2{fill:url(#未命名的渐变_12-2);}.cls-3{fill:url(#未命名的渐变_12-3);}.cls-4{fill:url(#未命名的渐变_21);}.cls-5{fill:url(#未命名的渐变_21-2);}.cls-6{fill:url(#未命名的渐变_12-4);}.cls-7{fill:url(#未命名的渐变_12-5);}.cls-8{fill:url(#未命名的渐变_12-6);}.cls-9{fill:url(#未命名的渐变_12-7);}.cls-10{fill:url(#未命名的渐变_12-8);}.cls-11{fill:url(#未命名的渐变_12-9);}.cls-12{fill:url(#未命名的渐变_12-10);}.cls-13{fill:url(#未命名的渐变_12-11);}.cls-14{fill:url(#未命名的渐变_12-12);}.cls-15{fill:url(#未命名的渐变_12-13);}.cls-16{fill:url(#未命名的渐变_12-14);}.cls-17{fill:url(#未命名的渐变_12-15);}.cls-18{fill:url(#未命名的渐变_12-16);}.cls-19{fill:url(#未命名的渐变_12-17);}.cls-20{fill:url(#未命名的渐变_12-18);}.cls-21{fill:url(#未命名的渐变_12-19);}.cls-22{fill:url(#未命名的渐变_12-20);}.cls-23{fill:url(#未命名的渐变_12-21);}.cls-24{fill:url(#未命名的渐变_12-22);}.cls-25{fill:url(#未命名的渐变_12-23);}.cls-26{fill:url(#未命名的渐变_12-24);}.cls-27{fill:url(#未命名的渐变_12-25);}.cls-28{fill:url(#未命名的渐变_12-26);}.cls-29{fill:url(#未命名的渐变_12-27);}.cls-30{fill:url(#未命名的渐变_12-28);}.cls-31{fill:url(#未命名的渐变_12-29);}.cls-32{fill:url(#未命名的渐变_12-30);}.cls-33{fill:url(#未命名的渐变_12-31);}.cls-34{fill:url(#未命名的渐变_12-32);}.cls-35{fill:url(#未命名的渐变_12-33);}.cls-36{fill:url(#未命名的渐变_12-34);}.cls-37{fill:url(#未命名的渐变_12-35);}\u003c/style\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12\" x1=\"205.61\" y1=\"491.18\" x2=\"706.67\" y2=\"491.18\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#48abf9\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#0084fe\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-2\" x1=\"458.59\" y1=\"337.06\" x2=\"627.21\" y2=\"337.06\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-3\" x1=\"293.25\" y1=\"350.85\" x2=\"421.63\" y2=\"350.85\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_21\" x1=\"142.63\" y1=\"500.22\" x2=\"430.46\" y2=\"500.22\" gradientUnits=\"userSpaceOnUse\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" stop-color=\"#0054d4\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" stop-color=\"#0069e7\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_21-2\" x1=\"427.78\" y1=\"421.29\" x2=\"769.64\" y2=\"421.29\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_21\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-4\" x1=\"466.91\" y1=\"620.24\" x2=\"495.53\" y2=\"620.24\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-5\" x1=\"466.91\" y1=\"690.71\" x2=\"495.53\" y2=\"690.71\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-6\" x1=\"466.91\" y1=\"761.19\" x2=\"495.77\" y2=\"761.19\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-7\" x1=\"516.93\" y1=\"761.31\" x2=\"646.63\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-8\" x1=\"667.79\" y1=\"761.31\" x2=\"696.65\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-9\" x1=\"574.8\" y1=\"615.33\" x2=\"603.43\" y2=\"615.33\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-10\" x1=\"574.8\" y1=\"678.51\" x2=\"603.67\" y2=\"678.51\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-11\" x1=\"762.18\" y1=\"678.63\" x2=\"791.27\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-12\" x1=\"805.86\" y1=\"678.51\" x2=\"834.95\" y2=\"678.51\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-13\" x1=\"715.28\" y1=\"678.63\" x2=\"744.37\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-14\" x1=\"668.38\" y1=\"678.63\" x2=\"697.47\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-15\" x1=\"621.47\" y1=\"678.63\" x2=\"650.57\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-16\" x1=\"709.41\" y1=\"761.31\" x2=\"767.87\" y2=\"761.31\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-17\" x1=\"849.41\" y1=\"678.63\" x2=\"907.88\" y2=\"678.63\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-18\" x1=\"375\" y1=\"280.85\" x2=\"403.63\" y2=\"280.85\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-19\" x1=\"375\" y1=\"236.62\" x2=\"403.63\" y2=\"236.62\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-20\" x1=\"374.76\" y1=\"192.38\" x2=\"403.63\" y2=\"192.38\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-21\" x1=\"223.91\" y1=\"192.26\" x2=\"353.6\" y2=\"192.26\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-22\" x1=\"262.34\" y1=\"328.22\" x2=\"290.96\" y2=\"328.22\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-23\" x1=\"262.1\" y1=\"284.6\" x2=\"290.96\" y2=\"284.6\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-24\" x1=\"85.97\" y1=\"284.48\" x2=\"247.13\" y2=\"284.48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-25\" x1=\"149.42\" y1=\"192.26\" x2=\"207.89\" y2=\"192.26\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-26\" x1=\"12.9\" y1=\"284.48\" x2=\"71.37\" y2=\"284.48\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-27\" x1=\"487.64\" y1=\"444.79\" x2=\"524.96\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-28\" x1=\"487.64\" y1=\"486.72\" x2=\"524.96\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-29\" x1=\"534.59\" y1=\"486.72\" x2=\"571.9\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-30\" x1=\"441.14\" y1=\"444.79\" x2=\"478.46\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-31\" x1=\"441.14\" y1=\"486.72\" x2=\"478.46\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-32\" x1=\"394.73\" y1=\"444.79\" x2=\"432.04\" y2=\"444.79\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-33\" x1=\"394.73\" y1=\"486.72\" x2=\"432.04\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-34\" x1=\"350.07\" y1=\"486.72\" x2=\"387.39\" y2=\"486.72\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"未命名的渐变_12-35\" x1=\"487.64\" y1=\"402.86\" x2=\"524.96\" y2=\"402.86\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#未命名的渐变_12\"\u003e\u003c/linearGradient\u003e\u003c/defs\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\"\u003e未标题-1\u003c/title\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-8\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-9\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-10\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-11\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-12\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-13\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-14\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-15\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-16\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-17\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-18\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-19\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-20\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-21\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-22\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-23\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-24\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-25\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-26\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-27\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-28\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"\u003e\u003c/path\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-29\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-30\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-31\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-32\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-33\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-34\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-35\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-36\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-37\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"图层_1\" data-name=\"图层 1\" viewBox=\"0 0 916.9 916.9\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003ctitle xmlns=\"http://www.w3.org/2000/svg\"\u003e未标题-1\u003c/title\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M635.75,434.78h0a13.05,13.05,0,0,0,0,26.1,44.9,44.9,0,0,1-.05,89.79H292A60.27,60.27,0,0,1,279.65,431.4a13.05,13.05,0,1,0-5.29-25.56A86.38,86.38,0,0,0,292,576.78h343.7a71,71,0,0,0,.08-142Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M467.38,343.58A13,13,0,0,0,484,335.52a60.19,60.19,0,1,1,108.78,50.1,13.05,13.05,0,1,0,22.49,13.25A86.28,86.28,0,1,0,459.31,327a13.05,13.05,0,0,0,8.07,16.6Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M306.12,392.48h.19a13,13,0,0,0,13-12.88,44.87,44.87,0,0,1,79.26-28.23,13,13,0,0,0,20-16.81,71,71,0,0,0-125.32,44.7,13.05,13.05,0,0,0,12.87,13.22Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M211.53,364.65c.94-.6,1.9-1.2,2.86-1.79A19.92,19.92,0,0,0,211.53,364.65Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M292,600.6a110.18,110.18,0,0,1-59.09-203.19c.55-.31,1.07-.64,1.58-1a19.57,19.57,0,0,0,8.46-16.12,19.7,19.7,0,0,0-2.87-10.2A19.62,19.62,0,0,0,216.42,362a18.36,18.36,0,0,0-3.07,1.54l-1.82,1.15a150,150,0,0,0-68.9,125.75c0,82.33,67,149.33,149.34,149.33H410.89a19.57,19.57,0,0,0,19.57-19.56h0a19.57,19.57,0,0,0-19.57-19.57Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M429.86,274.09l-1.29-3.27A18.53,18.53,0,0,0,429.86,274.09Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M462.08,278.26,461,279.4C461.37,279,461.73,278.66,462.08,278.26Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M687.68,382.32a148.65,148.65,0,0,0,2.5-27.12c0-82.35-67-149.34-149.33-149.34a149.25,149.25,0,0,0-107.57,45.85l-.3.32a19.57,19.57,0,0,0-4.41,18.79l1.29,3.27a19.6,19.6,0,0,0,27.08,8.33l1.58-1a20.12,20.12,0,0,0,2.47-2l1.09-1.14A109.63,109.63,0,0,1,539.68,245c60.89-.63,111.05,48.74,111.35,109.63A109.55,109.55,0,0,1,635.78,411,94.84,94.84,0,0,1,657.3,598.12a19.53,19.53,0,0,0-15.07,19h0a19.59,19.59,0,0,0,24.14,19c59.12-13.91,103.27-67.09,103.27-130.4A134.18,134.18,0,0,0,687.68,382.32Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.22,634.67a14.32,14.32,0,0,1-14.31-14.32v-.23a14.31,14.31,0,1,1,28.62,0v.23A14.31,14.31,0,0,1,481.22,634.67Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.22,728.79a14.31,14.31,0,0,1-14.31-14.31V714a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,728.79Zm0-47.06a14.31,14.31,0,0,1-14.31-14.31V667a14.31,14.31,0,1,1,28.62,0v.47A14.31,14.31,0,0,1,481.22,681.73Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M481.14,775.62h0a14.23,14.23,0,0,1-14.23-14.23h0A14.51,14.51,0,0,1,481,746.76a14.72,14.72,0,0,1,14.76,14.77A14.51,14.51,0,0,1,481.14,775.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M632.31,775.62h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62h.49a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M682.34,775.62h-.24a14.31,14.31,0,1,1,0-28.62h.24a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M589.11,629.76a14.31,14.31,0,0,1-14.31-14.31v-.24a14.32,14.32,0,1,1,28.63,0v.24A14.32,14.32,0,0,1,589.11,629.76Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M589.06,692.94h0a14.25,14.25,0,0,1-14.26-14.25h0a14.51,14.51,0,0,1,14.08-14.61,14.72,14.72,0,0,1,14.78,14.79A14.49,14.49,0,0,1,589.06,692.94Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M777,692.94h-.47a14.31,14.31,0,1,1,0-28.62H777a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M820.64,692.83h-.47a14.32,14.32,0,0,1,0-28.63h.47a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M730.05,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M683.15,692.94h-.46a14.31,14.31,0,0,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M636.25,692.94h-.46a14.31,14.31,0,1,1,0-28.62h.46a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M738.64,790.54a29.23,29.23,0,1,1,29.23-29.23A29.26,29.26,0,0,1,738.64,790.54Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,738.64,748.3Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M878.65,707.86a29.23,29.23,0,1,1,29.23-29.23A29.27,29.27,0,0,1,878.65,707.86Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,878.65,665.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.31,295.28A14.31,14.31,0,0,1,375,281v-.24a14.32,14.32,0,0,1,28.63,0V281A14.32,14.32,0,0,1,389.31,295.28Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.31,251.15A14.32,14.32,0,0,1,375,236.83v-.43a14.32,14.32,0,1,1,28.63,0v.43A14.32,14.32,0,0,1,389.31,251.15Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M389.55,206.81A14.72,14.72,0,0,1,374.76,192,14.51,14.51,0,0,1,389.37,178h0a14.26,14.26,0,0,1,14.26,14.26h0A14.51,14.51,0,0,1,389.55,206.81Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M339.29,206.57h-.5a14.31,14.31,0,1,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Zm-50.29,0h-.49a14.31,14.31,0,1,1,0-28.62H289a14.31,14.31,0,1,1,0,28.62Zm-50.28,0h-.5a14.31,14.31,0,0,1,0-28.62h.5a14.31,14.31,0,1,1,0,28.62Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M276.65,342.66a14.31,14.31,0,0,1-14.31-14.32v-.24a14.31,14.31,0,0,1,28.62,0v.24A14.32,14.32,0,0,1,276.65,342.66Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M276.88,299a14.72,14.72,0,0,1-14.78-14.78,14.51,14.51,0,0,1,14.6-14.08h0A14.25,14.25,0,0,1,291,284.43h0A14.49,14.49,0,0,1,276.88,299Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M232.81,298.8h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.43a14.32,14.32,0,1,1,0-28.63h.43a14.32,14.32,0,1,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Zm-44,0h-.44a14.32,14.32,0,0,1,0-28.63h.44a14.32,14.32,0,0,1,0,28.63Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M178.65,221.49a29.23,29.23,0,1,1,29.24-29.23A29.26,29.26,0,0,1,178.65,221.49Zm0-42.24a13,13,0,1,0,13,13A13,13,0,0,0,178.65,179.25Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M42.13,313.72a29.24,29.24,0,1,1,29.24-29.24A29.27,29.27,0,0,1,42.13,313.72Zm0-42.25a13,13,0,1,0,13,13A13,13,0,0,0,42.13,271.47Z\"\u003e\u003c/path\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"534.59\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"441.14\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"441.14\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"394.73\" y=\"428.51\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"394.73\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"350.07\" y=\"470.44\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003crect xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" x=\"487.64\" y=\"386.58\" width=\"37.32\" height=\"32.57\"\u003e\u003c/rect\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "v1.0.0"
+ },
+ "name": "fabedge",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Cloud Native Network",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/flux/v1.3.0/v1.0.0/components/Bucket.json b/server/meshmodel/flux/v1.3.0/v1.0.0/components/Bucket.json
new file mode 100644
index 00000000000..a7acf3457dd
--- /dev/null
+++ b/server/meshmodel/flux/v1.3.0/v1.0.0/components/Bucket.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "Bucket",
+ "schema": "{\n \"description\": \"Bucket is the Schema for the buckets API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"BucketSpec defines the desired state of an S3 compatible bucket\",\n \"properties\": {\n \"accessFrom\": {\n \"description\": \"AccessFrom defines an Access Control List for allowing cross-namespace references to this object.\",\n \"properties\": {\n \"namespaceSelectors\": {\n \"description\": \"NamespaceSelectors is the list of namespace selectors to which this ACL applies.\\nItems in this list are evaluated using a logical OR operation.\",\n \"items\": {\n \"description\": \"NamespaceSelector selects the namespaces to which this ACL applies.\\nAn empty map of MatchLabels matches all namespaces in a cluster.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"MatchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"namespaceSelectors\"\n ],\n \"type\": \"object\"\n },\n \"bucketName\": {\n \"description\": \"The bucket name.\",\n \"type\": \"string\"\n },\n \"endpoint\": {\n \"description\": \"The bucket endpoint address.\",\n \"type\": \"string\"\n },\n \"ignore\": {\n \"description\": \"Ignore overrides the set of excluded patterns in the .sourceignore format\\n(which is the same as .gitignore). If not provided, a default will be used,\\nconsult the documentation for your version to find out what those are.\",\n \"type\": \"string\"\n },\n \"insecure\": {\n \"description\": \"Insecure allows connecting to a non-TLS S3 HTTP endpoint.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"The interval at which to check for bucket updates.\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"default\": \"generic\",\n \"description\": \"The S3 compatible storage provider name, default ('generic').\",\n \"enum\": [\n \"generic\",\n \"aws\",\n \"gcp\"\n ],\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The bucket region.\",\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"The name of the secret containing authentication credentials\\nfor the Bucket.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"suspend\": {\n \"description\": \"This flag tells the controller to suspend the reconciliation of this source.\",\n \"type\": \"boolean\"\n },\n \"timeout\": {\n \"default\": \"60s\",\n \"description\": \"The timeout for download operations, defaults to 60s.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"bucketName\",\n \"endpoint\",\n \"interval\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Bucket\",\n \"type\": \"object\"\n}",
+ "version": "source.toolkit.fluxcd.io/v1beta1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Bucket",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases"
+ },
+ "model": {
+ "category": {
+ "name": "App Definition and Development"
+ },
+ "displayName": "Flux",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v1.3.0"
+ },
+ "name": "flux",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Continuous Integration \u0026 Delivery",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"/\u003e\u003cpath fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/flux/v1.3.0/v1.0.0/components/GitRepository.json b/server/meshmodel/flux/v1.3.0/v1.0.0/components/GitRepository.json
new file mode 100644
index 00000000000..6d77217f0ab
--- /dev/null
+++ b/server/meshmodel/flux/v1.3.0/v1.0.0/components/GitRepository.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "GitRepository",
+ "schema": "{\n \"description\": \"GitRepository is the Schema for the gitrepositories API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"GitRepositorySpec specifies the required configuration to produce an\\nArtifact for a Git repository.\",\n \"properties\": {\n \"ignore\": {\n \"description\": \"Ignore overrides the set of excluded patterns in the .sourceignore format\\n(which is the same as .gitignore). If not provided, a default will be used,\\nconsult the documentation for your version to find out what those are.\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"Include specifies a list of GitRepository resources which Artifacts\\nshould be included in the Artifact produced for this GitRepository.\",\n \"items\": {\n \"description\": \"GitRepositoryInclude specifies a local reference to a GitRepository which\\nArtifact (sub-)contents must be included, and where they should be placed.\",\n \"properties\": {\n \"fromPath\": {\n \"description\": \"FromPath specifies the path to copy contents from, defaults to the root\\nof the Artifact.\",\n \"type\": \"string\"\n },\n \"repository\": {\n \"description\": \"GitRepositoryRef specifies the GitRepository which Artifact contents\\nmust be included.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"toPath\": {\n \"description\": \"ToPath specifies the path to copy contents to, defaults to the name of\\nthe GitRepositoryRef.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"interval\": {\n \"description\": \"Interval at which the GitRepository URL is checked for updates.\\nThis interval is approximate and may be subject to jitter to ensure\\nefficient use of resources.\",\n \"pattern\": \"^([0-9]+(\\\\.[0-9]+)?(ms|s|m|h))+$\",\n \"type\": \"string\"\n },\n \"proxySecretRef\": {\n \"description\": \"ProxySecretRef specifies the Secret containing the proxy configuration\\nto use while communicating with the Git server.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"recurseSubmodules\": {\n \"description\": \"RecurseSubmodules enables the initialization of all submodules within\\nthe GitRepository as cloned from the URL, using their default settings.\",\n \"type\": \"boolean\"\n },\n \"ref\": {\n \"description\": \"Reference specifies the Git reference to resolve and monitor for\\nchanges, defaults to the 'master' branch.\",\n \"properties\": {\n \"branch\": {\n \"description\": \"Branch to check out, defaults to 'master' if no other field is defined.\",\n \"type\": \"string\"\n },\n \"commit\": {\n \"description\": \"Commit SHA to check out, takes precedence over all reference fields.\\n\\n\\nThis can be combined with Branch to shallow clone the branch, in which\\nthe commit is expected to exist.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the reference to check out; takes precedence over Branch, Tag and SemVer.\\n\\n\\nIt must be a valid Git reference: https://git-scm.com/docs/git-check-ref-format#_description\\nExamples: \\\"refs/heads/main\\\", \\\"refs/tags/v0.1.0\\\", \\\"refs/pull/420/head\\\", \\\"refs/merge-requests/1/head\\\"\",\n \"type\": \"string\"\n },\n \"semver\": {\n \"description\": \"SemVer tag expression to check out, takes precedence over Tag.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag to check out, takes precedence over Branch.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef specifies the Secret containing authentication credentials for\\nthe GitRepository.\\nFor HTTPS repositories the Secret must contain 'username' and 'password'\\nfields for basic auth or 'bearerToken' field for token auth.\\nFor SSH repositories the Secret must contain 'identity'\\nand 'known_hosts' fields.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"suspend\": {\n \"description\": \"Suspend tells the controller to suspend the reconciliation of this\\nGitRepository.\",\n \"type\": \"boolean\"\n },\n \"timeout\": {\n \"default\": \"60s\",\n \"description\": \"Timeout for Git operations like cloning, defaults to 60s.\",\n \"pattern\": \"^([0-9]+(\\\\.[0-9]+)?(ms|s|m))+$\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL specifies the Git repository URL, it can be an HTTP/S or SSH address.\",\n \"pattern\": \"^(http|https|ssh)://.*$\",\n \"type\": \"string\"\n },\n \"verify\": {\n \"description\": \"Verification specifies the configuration to verify the Git commit\\nsignature(s).\",\n \"properties\": {\n \"mode\": {\n \"default\": \"HEAD\",\n \"description\": \"Mode specifies which Git object(s) should be verified.\\n\\n\\nThe variants \\\"head\\\" and \\\"HEAD\\\" both imply the same thing, i.e. verify\\nthe commit that the HEAD of the Git repository points to. The variant\\n\\\"head\\\" solely exists to ensure backwards compatibility.\",\n \"enum\": [\n \"head\",\n \"HEAD\",\n \"Tag\",\n \"TagAndHEAD\"\n ],\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef specifies the Secret containing the public keys of trusted Git\\nauthors.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"secretRef\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"interval\",\n \"url\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Git Repository\",\n \"type\": \"object\"\n}",
+ "version": "source.toolkit.fluxcd.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Git Repository",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases"
+ },
+ "model": {
+ "category": {
+ "name": "App Definition and Development"
+ },
+ "displayName": "Flux",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v1.3.0"
+ },
+ "name": "flux",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Continuous Integration \u0026 Delivery",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"/\u003e\u003cpath fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/flux/v1.3.0/v1.0.0/components/HelmChart.json b/server/meshmodel/flux/v1.3.0/v1.0.0/components/HelmChart.json
new file mode 100644
index 00000000000..cc1ee00941d
--- /dev/null
+++ b/server/meshmodel/flux/v1.3.0/v1.0.0/components/HelmChart.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "HelmChart",
+ "schema": "{\n \"description\": \"HelmChart is the Schema for the helmcharts API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"HelmChartSpec specifies the desired state of a Helm chart.\",\n \"properties\": {\n \"chart\": {\n \"description\": \"Chart is the name or path the Helm chart is available at in the\\nSourceRef.\",\n \"type\": \"string\"\n },\n \"ignoreMissingValuesFiles\": {\n \"description\": \"IgnoreMissingValuesFiles controls whether to silently ignore missing values\\nfiles rather than failing.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which the HelmChart SourceRef is checked for updates.\\nThis interval is approximate and may be subject to jitter to ensure\\nefficient use of resources.\",\n \"pattern\": \"^([0-9]+(\\\\.[0-9]+)?(ms|s|m|h))+$\",\n \"type\": \"string\"\n },\n \"reconcileStrategy\": {\n \"default\": \"ChartVersion\",\n \"description\": \"ReconcileStrategy determines what enables the creation of a new artifact.\\nValid values are ('ChartVersion', 'Revision').\\nSee the documentation of the values for an explanation on their behavior.\\nDefaults to ChartVersion when omitted.\",\n \"enum\": [\n \"ChartVersion\",\n \"Revision\"\n ],\n \"type\": \"string\"\n },\n \"sourceRef\": {\n \"description\": \"SourceRef is the reference to the Source the chart is available at.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"APIVersion of the referent.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"Kind of the referent, valid values are ('HelmRepository', 'GitRepository',\\n'Bucket').\",\n \"enum\": [\n \"HelmRepository\",\n \"GitRepository\",\n \"Bucket\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"suspend\": {\n \"description\": \"Suspend tells the controller to suspend the reconciliation of this\\nsource.\",\n \"type\": \"boolean\"\n },\n \"valuesFiles\": {\n \"description\": \"ValuesFiles is an alternative list of values files to use as the chart\\nvalues (values.yaml is not included by default), expected to be a\\nrelative path in the SourceRef.\\nValues files are merged in the order of this list with the last file\\noverriding the first. Ignored when omitted.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"verify\": {\n \"description\": \"Verify contains the secret name containing the trusted public keys\\nused to verify the signature and specifies which provider to use to check\\nwhether OCI image is authentic.\\nThis field is only supported when using HelmRepository source with spec.type 'oci'.\\nChart dependencies, which are not bundled in the umbrella chart artifact, are not verified.\",\n \"properties\": {\n \"matchOIDCIdentity\": {\n \"description\": \"MatchOIDCIdentity specifies the identity matching criteria to use\\nwhile verifying an OCI artifact which was signed using Cosign keyless\\nsigning. The artifact's identity is deemed to be verified if any of the\\nspecified matchers match against the identity.\",\n \"items\": {\n \"description\": \"OIDCIdentityMatch specifies options for verifying the certificate identity,\\ni.e. the issuer and the subject of the certificate.\",\n \"properties\": {\n \"issuer\": {\n \"description\": \"Issuer specifies the regex pattern to match against to verify\\nthe OIDC issuer in the Fulcio certificate. The pattern must be a\\nvalid Go regular expression.\",\n \"type\": \"string\"\n },\n \"subject\": {\n \"description\": \"Subject specifies the regex pattern to match against to verify\\nthe identity subject in the Fulcio certificate. The pattern must\\nbe a valid Go regular expression.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"issuer\",\n \"subject\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"provider\": {\n \"default\": \"cosign\",\n \"description\": \"Provider specifies the technology used to sign the OCI Artifact.\",\n \"enum\": [\n \"cosign\",\n \"notation\"\n ],\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef specifies the Kubernetes Secret containing the\\ntrusted public keys.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"provider\"\n ],\n \"type\": \"object\"\n },\n \"version\": {\n \"default\": \"*\",\n \"description\": \"Version is the chart version semver expression, ignored for charts from\\nGitRepository and Bucket sources. Defaults to latest when omitted.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"chart\",\n \"interval\",\n \"sourceRef\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Helm Chart\",\n \"type\": \"object\"\n}",
+ "version": "source.toolkit.fluxcd.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Helm Chart",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases"
+ },
+ "model": {
+ "category": {
+ "name": "App Definition and Development"
+ },
+ "displayName": "Flux",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v1.3.0"
+ },
+ "name": "flux",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Continuous Integration \u0026 Delivery",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"/\u003e\u003cpath fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/flux/v1.3.0/v1.0.0/components/HelmRepository.json b/server/meshmodel/flux/v1.3.0/v1.0.0/components/HelmRepository.json
new file mode 100644
index 00000000000..5821ac7de36
--- /dev/null
+++ b/server/meshmodel/flux/v1.3.0/v1.0.0/components/HelmRepository.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "HelmRepository",
+ "schema": "{\n \"description\": \"HelmRepository is the Schema for the helmrepositories API.\",\n \"properties\": {\n \"spec\": {\n \"description\": \"HelmRepositorySpec specifies the required configuration to produce an\\nArtifact for a Helm repository index YAML.\",\n \"properties\": {\n \"accessFrom\": {\n \"description\": \"AccessFrom specifies an Access Control List for allowing cross-namespace\\nreferences to this object.\\nNOTE: Not implemented, provisional as of https://github.com/fluxcd/flux2/pull/2092\",\n \"properties\": {\n \"namespaceSelectors\": {\n \"description\": \"NamespaceSelectors is the list of namespace selectors to which this ACL applies.\\nItems in this list are evaluated using a logical OR operation.\",\n \"items\": {\n \"description\": \"NamespaceSelector selects the namespaces to which this ACL applies.\\nAn empty map of MatchLabels matches all namespaces in a cluster.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"MatchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\\nmap is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the\\noperator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"namespaceSelectors\"\n ],\n \"type\": \"object\"\n },\n \"certSecretRef\": {\n \"description\": \"CertSecretRef can be given the name of a Secret containing\\neither or both of\\n\\n\\n- a PEM-encoded client certificate (`tls.crt`) and private\\nkey (`tls.key`);\\n- a PEM-encoded CA certificate (`ca.crt`)\\n\\n\\nand whichever are supplied, will be used for connecting to the\\nregistry. The client cert and key are useful if you are\\nauthenticating with a certificate; the CA cert is useful if\\nyou are using a self-signed server certificate. The Secret must\\nbe of type `Opaque` or `kubernetes.io/tls`.\\n\\n\\nIt takes precedence over the values specified in the Secret referred\\nto by `.spec.secretRef`.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"insecure\": {\n \"description\": \"Insecure allows connecting to a non-TLS HTTP container registry.\\nThis field is only taken into account if the .spec.type field is set to 'oci'.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which the HelmRepository URL is checked for updates.\\nThis interval is approximate and may be subject to jitter to ensure\\nefficient use of resources.\",\n \"pattern\": \"^([0-9]+(\\\\.[0-9]+)?(ms|s|m|h))+$\",\n \"type\": \"string\"\n },\n \"passCredentials\": {\n \"description\": \"PassCredentials allows the credentials from the SecretRef to be passed\\non to a host that does not match the host as defined in URL.\\nThis may be required if the host of the advertised chart URLs in the\\nindex differ from the defined URL.\\nEnabling this should be done with caution, as it can potentially result\\nin credentials getting stolen in a MITM-attack.\",\n \"type\": \"boolean\"\n },\n \"provider\": {\n \"default\": \"generic\",\n \"description\": \"Provider used for authentication, can be 'aws', 'azure', 'gcp' or 'generic'.\\nThis field is optional, and only taken into account if the .spec.type field is set to 'oci'.\\nWhen not specified, defaults to 'generic'.\",\n \"enum\": [\n \"generic\",\n \"aws\",\n \"azure\",\n \"gcp\"\n ],\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef specifies the Secret containing authentication credentials\\nfor the HelmRepository.\\nFor HTTP/S basic auth the secret must contain 'username' and 'password'\\nfields.\\nSupport for TLS auth using the 'certFile' and 'keyFile', and/or 'caFile'\\nkeys is deprecated. Please use `.spec.certSecretRef` instead.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"suspend\": {\n \"description\": \"Suspend tells the controller to suspend the reconciliation of this\\nHelmRepository.\",\n \"type\": \"boolean\"\n },\n \"timeout\": {\n \"description\": \"Timeout is used for the index fetch operation for an HTTPS helm repository,\\nand for remote OCI Repository operations like pulling for an OCI helm\\nchart by the associated HelmChart.\\nIts default value is 60s.\",\n \"pattern\": \"^([0-9]+(\\\\.[0-9]+)?(ms|s|m))+$\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of the HelmRepository.\\nWhen this field is set to \\\"oci\\\", the URL field value must be prefixed with \\\"oci://\\\".\",\n \"enum\": [\n \"default\",\n \"oci\"\n ],\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL of the Helm repository, a valid URL contains at least a protocol and\\nhost.\",\n \"pattern\": \"^(http|https|oci)://.*$\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Helm Repository\",\n \"type\": \"object\"\n}",
+ "version": "source.toolkit.fluxcd.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Helm Repository",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases"
+ },
+ "model": {
+ "category": {
+ "name": "App Definition and Development"
+ },
+ "displayName": "Flux",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v1.3.0"
+ },
+ "name": "flux",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Continuous Integration \u0026 Delivery",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"/\u003e\u003cpath fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/flux/v1.3.0/v1.0.0/components/OCIRepository.json b/server/meshmodel/flux/v1.3.0/v1.0.0/components/OCIRepository.json
new file mode 100644
index 00000000000..d35d3142058
--- /dev/null
+++ b/server/meshmodel/flux/v1.3.0/v1.0.0/components/OCIRepository.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "OCIRepository",
+ "schema": "{\n \"description\": \"OCIRepository is the Schema for the ocirepositories API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"OCIRepositorySpec defines the desired state of OCIRepository\",\n \"properties\": {\n \"certSecretRef\": {\n \"description\": \"CertSecretRef can be given the name of a Secret containing\\neither or both of\\n\\n\\n- a PEM-encoded client certificate (`tls.crt`) and private\\nkey (`tls.key`);\\n- a PEM-encoded CA certificate (`ca.crt`)\\n\\n\\nand whichever are supplied, will be used for connecting to the\\nregistry. The client cert and key are useful if you are\\nauthenticating with a certificate; the CA cert is useful if\\nyou are using a self-signed server certificate. The Secret must\\nbe of type `Opaque` or `kubernetes.io/tls`.\\n\\n\\nNote: Support for the `caFile`, `certFile` and `keyFile` keys have\\nbeen deprecated.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"ignore\": {\n \"description\": \"Ignore overrides the set of excluded patterns in the .sourceignore format\\n(which is the same as .gitignore). If not provided, a default will be used,\\nconsult the documentation for your version to find out what those are.\",\n \"type\": \"string\"\n },\n \"insecure\": {\n \"description\": \"Insecure allows connecting to a non-TLS HTTP container registry.\",\n \"type\": \"boolean\"\n },\n \"interval\": {\n \"description\": \"Interval at which the OCIRepository URL is checked for updates.\\nThis interval is approximate and may be subject to jitter to ensure\\nefficient use of resources.\",\n \"pattern\": \"^([0-9]+(\\\\.[0-9]+)?(ms|s|m|h))+$\",\n \"type\": \"string\"\n },\n \"layerSelector\": {\n \"description\": \"LayerSelector specifies which layer should be extracted from the OCI artifact.\\nWhen not specified, the first layer found in the artifact is selected.\",\n \"properties\": {\n \"mediaType\": {\n \"description\": \"MediaType specifies the OCI media type of the layer\\nwhich should be extracted from the OCI Artifact. The\\nfirst layer matching this type is selected.\",\n \"type\": \"string\"\n },\n \"operation\": {\n \"description\": \"Operation specifies how the selected layer should be processed.\\nBy default, the layer compressed content is extracted to storage.\\nWhen the operation is set to 'copy', the layer compressed content\\nis persisted to storage as it is.\",\n \"enum\": [\n \"extract\",\n \"copy\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"provider\": {\n \"default\": \"generic\",\n \"description\": \"The provider used for authentication, can be 'aws', 'azure', 'gcp' or 'generic'.\\nWhen not specified, defaults to 'generic'.\",\n \"enum\": [\n \"generic\",\n \"aws\",\n \"azure\",\n \"gcp\"\n ],\n \"type\": \"string\"\n },\n \"ref\": {\n \"description\": \"The OCI reference to pull and monitor for changes,\\ndefaults to the latest tag.\",\n \"properties\": {\n \"digest\": {\n \"description\": \"Digest is the image digest to pull, takes precedence over SemVer.\\nThe value should be in the format 'sha256:\\u003cHASH\\u003e'.\",\n \"type\": \"string\"\n },\n \"semver\": {\n \"description\": \"SemVer is the range of tags to pull selecting the latest within\\nthe range, takes precedence over Tag.\",\n \"type\": \"string\"\n },\n \"semverFilter\": {\n \"description\": \"SemverFilter is a regex pattern to filter the tags within the SemVer range.\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"Tag is the image tag to pull, defaults to latest.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef contains the secret name containing the registry login\\ncredentials to resolve image metadata.\\nThe secret must be of type kubernetes.io/dockerconfigjson.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"serviceAccountName\": {\n \"description\": \"ServiceAccountName is the name of the Kubernetes ServiceAccount used to authenticate\\nthe image pull if the service account has attached pull secrets. For more information:\\nhttps://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account\",\n \"type\": \"string\"\n },\n \"suspend\": {\n \"description\": \"This flag tells the controller to suspend the reconciliation of this source.\",\n \"type\": \"boolean\"\n },\n \"timeout\": {\n \"default\": \"60s\",\n \"description\": \"The timeout for remote OCI Repository operations like pulling, defaults to 60s.\",\n \"pattern\": \"^([0-9]+(\\\\.[0-9]+)?(ms|s|m))+$\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL is a reference to an OCI artifact repository hosted\\non a remote container registry.\",\n \"pattern\": \"^oci://.*$\",\n \"type\": \"string\"\n },\n \"verify\": {\n \"description\": \"Verify contains the secret name containing the trusted public keys\\nused to verify the signature and specifies which provider to use to check\\nwhether OCI image is authentic.\",\n \"properties\": {\n \"matchOIDCIdentity\": {\n \"description\": \"MatchOIDCIdentity specifies the identity matching criteria to use\\nwhile verifying an OCI artifact which was signed using Cosign keyless\\nsigning. The artifact's identity is deemed to be verified if any of the\\nspecified matchers match against the identity.\",\n \"items\": {\n \"description\": \"OIDCIdentityMatch specifies options for verifying the certificate identity,\\ni.e. the issuer and the subject of the certificate.\",\n \"properties\": {\n \"issuer\": {\n \"description\": \"Issuer specifies the regex pattern to match against to verify\\nthe OIDC issuer in the Fulcio certificate. The pattern must be a\\nvalid Go regular expression.\",\n \"type\": \"string\"\n },\n \"subject\": {\n \"description\": \"Subject specifies the regex pattern to match against to verify\\nthe identity subject in the Fulcio certificate. The pattern must\\nbe a valid Go regular expression.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"issuer\",\n \"subject\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"provider\": {\n \"default\": \"cosign\",\n \"description\": \"Provider specifies the technology used to sign the OCI Artifact.\",\n \"enum\": [\n \"cosign\",\n \"notation\"\n ],\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"description\": \"SecretRef specifies the Kubernetes Secret containing the\\ntrusted public keys.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the referent.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"provider\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"interval\",\n \"url\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"OCI Repository\",\n \"type\": \"object\"\n}",
+ "version": "source.toolkit.fluxcd.io/v1beta2"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "OCI Repository",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases"
+ },
+ "model": {
+ "category": {
+ "name": "App Definition and Development"
+ },
+ "displayName": "Flux",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "source_uri": "git://github.com/fluxcd/source-controller/main/config/crd/bases",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v1.3.0"
+ },
+ "name": "flux",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Continuous Integration \u0026 Delivery",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"/\u003e\u003cpath fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"/\u003e\u003cpath d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"/\u003e\u003cpath d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"/\u003e\u003cpath d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"/\u003e\u003c/svg\u003e\n"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/flux/v1.3.0/v1.0.0/model.json b/server/meshmodel/flux/v1.3.0/v1.0.0/model.json
new file mode 100644
index 00000000000..c175cafcd9f
--- /dev/null
+++ b/server/meshmodel/flux/v1.3.0/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "App Definition and Development"
+ },
+ "displayName": "Flux",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#326ce5",
+ "secondaryColor": "#77B1FF",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#326ce5}.cls-3{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M59.72393 97.77847a10.18251 10.18251 0 0 1 0-17.07393l114.0703-74.16023a10.18258 10.18258 0 0 1 11.10024 0l114.07029 74.16023a10.1825 10.1825 0 0 1 0 17.07394l-114.07029 74.16021a10.18254 10.18254 0 0 1-11.10024 0z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" fill=\"#c1d2f7\" d=\"M197.35565 110.866h7.91277a6.00326 6.00326 0 0 0 5.19908-9.005l-25.92381-44.902a6.00355 6.00355 0 0 0-10.39838 0l-25.924 44.902a6.00326 6.00326 0 0 0 5.19905 9.005h7.913a6.0034 6.0034 0 0 1 6.00341 6.0034v51.2563l5.31037 3.45252a12.28743 12.28743 0 0 0 13.39445 0l5.31062-3.45252v-51.25628a6.0034 6.0034 0 0 1 6.0034-6.00341z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-3\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"48.00 -2.25 262.50 364.00\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#fff}.cls-2{fill:none}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M178.17168 173.50075c-.1203-.01154-.2406-.0235-.36059-.03858.11991.01825.24023.0246.36059.03858zm.59967.04272a10.136 10.136 0 0 0 1.14594 0q-.57285.02673-1.14594 0zm2.10621-.0813c-.11988.01508-.24012.027-.36036.03858.1203-.01398.24054-.02033.36036-.03858zm118.08722-92.75763L184.89446 6.54433a10.18235 10.18235 0 0 0-11.10022 0L59.72393 80.70454a10.18249 10.18249 0 0 0 0 17.07392l107.61285 69.962V116.8694a6.00343 6.00343 0 0 0-6.00341-6.00342h-7.913a6.00321 6.00321 0 0 1-5.199-9.005l25.924-44.902a6.00355 6.00355 0 0 1 10.39837 0l25.92383 44.902a6.0033 6.0033 0 0 1-5.1991 9.005h-7.91278a6.00343 6.00343 0 0 0-6.00341 6.00342v50.87091l107.6125-69.96185a10.1825 10.1825 0 0 0 0-17.07392z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M173.79348 353.27108a10.12828 10.12828 0 0 0 3.45643 1.402c-2.17549-1.2312-4.38727-2.37429-6.62269-3.46036zm-6.45667-161.19546l-11.3157 7.35661a110.993 110.993 0 0 0 11.31571 6.5997zm24.01537 23.71607c9.73858 3.11505 19.81317 5.64851 30.10973 8.18655 10.92032 2.69182 21.97355 5.42717 32.81792 9.00839l-35.41606-23.02482a215.88133 215.88133 0 0 1-27.51161-9.41007zm0 62.19159v.58577c0 2.56929-2.68787 4.65195-6.00338 4.65195h-12.00855c-3.31549 0-6.00338-2.08266-6.00338-4.65195v-6.60473c-24.90538-6.40209-49.87294-14.48506-70.85945-33.8211L81.94819 247.589c22.46761 22.0509 50.27893 28.93291 79.71441 36.1886 27.17852 6.69856 55.18051 13.65144 78.68557 33.44222l14.67907-9.54334c-18.53142-16.50431-40.40962-23.68778-63.67506-29.6932zm-98.03756 22.96639l38.90829 25.29525c20.06438 5.11336 40.20029 11.24773 58.311 23.36044l14.90023-9.687c-19.7518-13.6724-42.5505-19.3134-66.41889-25.197-15.28704-3.76779-30.83479-7.6166-45.70063-13.77169zm74.02219-82.25413a124.3199 124.3199 0 0 1-21.53392-12.62006l-14.80531 9.62521a124.54057 124.54057 0 0 0 36.33923 18.708zm51.41006 16.29412c-9.1062-2.24474-18.30362-4.52388-27.39469-7.29853v13.68209q5.051 1.2853 10.17672 2.53817c29.93438 7.37818 60.8879 15.00885 85.70767 39.82861.60979.60979 1.16261 1.23989 1.752 1.85715l9.97427-6.48445a10.10425 10.10425 0 0 0 3.47529-3.79928c-1.06644-1.17252-2.144-2.34132-3.28875-3.48612-22.58513-22.5853-50.66938-29.50856-80.40251-36.83764zm-19.93295 19.93298q-3.72217-.91747-7.46168-1.85484v13.20974c25.81676 6.56181 51.80263 14.68843 73.4551 35.04069l14.52114-9.44055c-.03854-.03875-.07256-.07916-.11131-.11792-22.58546-22.58524-50.66975-29.50848-80.40325-36.83712zm-31.47711-8.58681c-16.28-5.27813-32.11777-12.39682-46.344-24.13081l-14.68176 9.5451c17.87023 15.55727 38.7844 22.67266 61.02572 28.50068z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M73.24049 254.95972c-.348-.348-.6585-.70949-.99967-1.05976l-12.51495 8.13648a10.16548 10.16548 0 0 0-1.64428 1.3968c1.05336 1.15677 2.11561 2.31024 3.24544 3.44 22.5852 22.58519 50.66968 29.50838 80.40322 36.83688 25.3425 6.24691 51.40113 12.71661 73.86454 29.60253l14.80574-9.62562c-20.86424-16.41993-45.53021-22.50891-71.45287-28.898-29.93385-7.37888-60.88738-15.00944-85.70717-39.82931z\" class=\"cls-2\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M218.86377 209.9618l-27.51159-17.886v8.4759a215.88 215.88 0 0 0 27.51159 9.4101zm-27.51159 5.82989v11.89938c9.09108 2.77471 18.28849 5.05388 27.39469 7.29853 29.73311 7.32909 57.81738 14.25232 80.40261 36.83773 1.14474 1.14474 2.22232 2.31354 3.28875 3.48611a10.19327 10.19327 0 0 0-3.4753-13.27711l-44.6831-29.04976c-10.84437-3.58121-21.89768-6.31656-32.81794-9.00838-10.29656-2.53799-20.37113-5.07145-30.10971-8.1865zm-24.01537-9.75969a110.99292 110.99292 0 0 1-11.31571-6.59969l-10.21821 6.6432a124.31932 124.31932 0 0 0 21.53392 12.62007zm34.19212 37.87941q-5.12528-1.26352-10.17673-2.53816v11.6946q3.73686.938 7.46168 1.85485c29.73352 7.32863 57.8178 14.25187 80.40318 36.83709.03876.03876.07277.07916.11132.11792l9.66023-6.28051c-.58945-.61726-1.14225-1.24733-1.752-1.85715-24.81978-24.81979-55.7733-32.45048-85.70768-39.82864zm-34.19212-9.50272a124.54057 124.54057 0 0 1-36.33923-18.708l-10.00473 6.50436c14.22612 11.734 30.06393 18.85268 46.344 24.1308zm0 25.84203c-22.24132-5.828-43.1555-12.94341-61.02572-28.5006l-9.8338 6.39315c20.98652 19.336 45.95407 27.41893 70.85947 33.8211zm24.01537 17.73256c23.26546 6.00539 45.14367 13.18886 63.67506 29.69312l9.78-6.35823c-21.65249-20.35225-47.63835-28.47893-73.45509-35.04068zM81.94813 247.589l-9.70729 6.311c.34117.35032.65166.71178.99967 1.05976 24.81977 24.81979 55.77329 32.45043 85.70706 39.82925 25.92266 6.38909 50.58863 12.47807 71.45288 28.898l9.94772-6.46724c-23.50506-19.79078-51.507-26.74365-78.68557-33.44222-29.43548-7.25569-57.2468-14.1377-79.71447-36.18855zM61.327 266.87321c-1.12983-1.12983-2.19209-2.28328-3.24545-3.44a10.1544 10.1544 0 0 0 1.64428 15.67957l33.5887 21.83694c14.86583 6.15509 30.41359 10.0039 45.70058 13.77166 23.8684 5.88357 46.66708 11.52464 66.4189 25.197l10.1606-6.6057c-22.46332-16.88587-48.522-23.35562-73.86447-29.60253-29.73343-7.32851-57.81791-14.25175-80.40314-36.83694zm109.30024 84.33948c2.2354 1.0861 4.44718 2.22919 6.62269 3.46036a10.16012 10.16012 0 0 0 7.64543-1.402l5.63858-3.66577c-18.11065-12.11266-38.24653-18.247-58.31095-23.36044z\" class=\"cls-1\"\u003e\u003c/path\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v1.3.0"
+ },
+ "name": "flux",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Continuous Integration \u0026 Delivery",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/galoy/0.33.114/v1.0.0/components/OAuth2Client.json b/server/meshmodel/galoy/0.33.114/v1.0.0/components/OAuth2Client.json
new file mode 100644
index 00000000000..61355eb862f
--- /dev/null
+++ b/server/meshmodel/galoy/0.33.114/v1.0.0/components/OAuth2Client.json
@@ -0,0 +1,195 @@
+{
+ "capabilities": [
+ {
+ "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.",
+ "displayName": "Performance Test",
+ "entityState": [
+ "instance"
+ ],
+ "key": "",
+ "kind": "action",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "perf-test",
+ "type": "operator",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the workload specific setting of a component",
+ "displayName": "Workload Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "config",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure Labels And Annotations for the component ",
+ "displayName": "Labels and Annotations Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "labels-and-annotations",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View relationships for the component",
+ "displayName": "Relationships",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "relationship",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View Component Definition ",
+ "displayName": "Json Schema",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "definition",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the visual styles for the component",
+ "displayName": "Styling",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Change the shape of the component",
+ "displayName": "Change Shape",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "shape",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Drag and Drop a component into a parent component in graph view",
+ "displayName": "Compound Drag And Drop",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "interaction",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "compoundDnd",
+ "type": "graph",
+ "version": "0.7.0"
+ }
+ ],
+ "component": {
+ "kind": "OAuth2Client",
+ "schema": "{\n \"description\": \"OAuth2Client is the Schema for the oauth2clients API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"OAuth2ClientSpec defines the desired state of OAuth2Client\",\n \"properties\": {\n \"allowedCorsOrigins\": {\n \"description\": \"AllowedCorsOrigins is an array of allowed CORS origins\",\n \"items\": {\n \"description\": \"RedirectURI represents a redirect URI for the client\",\n \"pattern\": \"\\\\w+:/?/?[^\\\\s]+\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"audience\": {\n \"description\": \"Audience is a whitelist defining the audiences this client is allowed to request tokens for\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"backChannelLogoutSessionRequired\": {\n \"default\": false,\n \"description\": \"BackChannelLogoutSessionRequired Boolean value specifying whether the RP requires that a sid (session ID) Claim be included in the Logout Token to identify the RP session with the OP when the backchannel_logout_uri is used. If omitted, the default value is false.\",\n \"type\": \"boolean\"\n },\n \"backChannelLogoutURI\": {\n \"description\": \"BackChannelLogoutURI RP URL that will cause the RP to log itself out when sent a Logout Token by the OP\",\n \"pattern\": \"(^$|^https?://.*)\",\n \"type\": \"string\"\n },\n \"clientName\": {\n \"description\": \"ClientName is the human-readable string name of the client to be presented to the end-user during authorization.\",\n \"type\": \"string\"\n },\n \"frontChannelLogoutSessionRequired\": {\n \"default\": false,\n \"description\": \"FrontChannelLogoutSessionRequired Boolean value specifying whether the RP requires that iss (issuer) and sid (session ID) query parameters be included to identify the RP session with the OP when the frontchannel_logout_uri is used\",\n \"type\": \"boolean\"\n },\n \"frontChannelLogoutURI\": {\n \"description\": \"FrontChannelLogoutURI RP URL that will cause the RP to log itself out when rendered in an iframe by the OP. An iss (issuer) query parameter and a sid (session ID) query parameter MAY be included by the OP to enable the RP to validate the request and to determine which of the potentially multiple sessions is to be logged out; if either is included, both MUST be\",\n \"pattern\": \"(^$|^https?://.*)\",\n \"type\": \"string\"\n },\n \"grantTypes\": {\n \"description\": \"GrantTypes is an array of grant types the client is allowed to use.\",\n \"items\": {\n \"description\": \"GrantType represents an OAuth 2.0 grant type\",\n \"enum\": [\n \"client_credentials\",\n \"authorization_code\",\n \"implicit\",\n \"refresh_token\"\n ],\n \"type\": \"string\"\n },\n \"maxItems\": 4,\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"hydraAdmin\": {\n \"description\": \"HydraAdmin is the optional configuration to use for managing this client\",\n \"properties\": {\n \"endpoint\": {\n \"description\": \"Endpoint is the endpoint for the hydra instance on which to set up the client. This value will override the value provided to `--endpoint` (defaults to `\\\"/clients\\\"` in the application)\",\n \"pattern\": \"(^$|^/.*)\",\n \"type\": \"string\"\n },\n \"forwardedProto\": {\n \"description\": \"ForwardedProto overrides the `--forwarded-proto` flag. The value \\\"off\\\" will force this to be off even if `--forwarded-proto` is specified\",\n \"pattern\": \"(^$|https?|off)\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Port is the port for the hydra instance on which to set up the client. This value will override the value provided to `--hydra-port`\",\n \"maximum\": 65535,\n \"type\": \"integer\"\n },\n \"url\": {\n \"description\": \"URL is the URL for the hydra instance on which to set up the client. This value will override the value provided to `--hydra-url`\",\n \"maxLength\": 64,\n \"pattern\": \"(^$|^https?://.*)\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"jwksUri\": {\n \"description\": \"JwksUri Define the URL where the JSON Web Key Set should be fetched from when performing the private_key_jwt client authentication method.\",\n \"pattern\": \"(^$|^https?://.*)\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Metadata is arbitrary data\",\n \"format\": \"textarea\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"postLogoutRedirectUris\": {\n \"description\": \"PostLogoutRedirectURIs is an array of the post logout redirect URIs allowed for the application\",\n \"items\": {\n \"description\": \"RedirectURI represents a redirect URI for the client\",\n \"pattern\": \"\\\\w+:/?/?[^\\\\s]+\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"redirectUris\": {\n \"description\": \"RedirectURIs is an array of the redirect URIs allowed for the application\",\n \"items\": {\n \"description\": \"RedirectURI represents a redirect URI for the client\",\n \"pattern\": \"\\\\w+:/?/?[^\\\\s]+\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"responseTypes\": {\n \"description\": \"ResponseTypes is an array of the OAuth 2.0 response type strings that the client can use at the authorization endpoint.\",\n \"items\": {\n \"description\": \"ResponseType represents an OAuth 2.0 response type strings\",\n \"enum\": [\n \"id_token\",\n \"code\",\n \"token\",\n \"code token\",\n \"code id_token\",\n \"id_token token\",\n \"code id_token token\"\n ],\n \"type\": \"string\"\n },\n \"maxItems\": 3,\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"scope\": {\n \"description\": \"Scope is a string containing a space-separated list of scope values (as described in Section 3.3 of OAuth 2.0 [RFC6749]) that the client can use when requesting access tokens.\",\n \"pattern\": \"([a-zA-Z0-9\\\\.\\\\*]+\\\\s?)+\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"description\": \"SecretName points to the K8s secret that contains this client's ID and password\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\",\n \"type\": \"string\"\n },\n \"skipConsent\": {\n \"default\": false,\n \"description\": \"SkipConsent skips the consent screen for this client.\",\n \"type\": \"boolean\"\n },\n \"tokenEndpointAuthMethod\": {\n \"allOf\": [\n {\n \"enum\": [\n \"client_secret_basic\",\n \"client_secret_post\",\n \"private_key_jwt\",\n \"none\"\n ]\n },\n {\n \"enum\": [\n \"client_secret_basic\",\n \"client_secret_post\",\n \"private_key_jwt\",\n \"none\"\n ]\n }\n ],\n \"description\": \"Indication which authentication method shoud be used for the token endpoint\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"grantTypes\",\n \"scope\",\n \"secretName\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"O Auth2Client\",\n \"type\": \"object\"\n}",
+ "version": "hydra.ory.sh/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "O Auth2Client",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "https://github.com/GaloyMoney/charts/releases/download/galoy-v0.33.114/galoy-0.33.114.tgz"
+ },
+ "model": {
+ "category": {
+ "name": "Uncategorized"
+ },
+ "displayName": "Galoy",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#00B39F",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "https://github.com/GaloyMoney/charts/releases/download/galoy-v0.33.114/galoy-0.33.114.tgz",
+ "styleOverrides": "",
+ "svgColor": "",
+ "svgComplete": "",
+ "svgWhite": ""
+ },
+ "model": {
+ "version": "0.33.114"
+ },
+ "name": "galoy",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "artifacthub",
+ "name": "Artifact Hub",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Uncategorized",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#00B39F",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "",
+ "svgWhite": ""
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/galoy/0.33.114/v1.0.0/components/Rule.json b/server/meshmodel/galoy/0.33.114/v1.0.0/components/Rule.json
new file mode 100644
index 00000000000..9c18dc0b349
--- /dev/null
+++ b/server/meshmodel/galoy/0.33.114/v1.0.0/components/Rule.json
@@ -0,0 +1,195 @@
+{
+ "capabilities": [
+ {
+ "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.",
+ "displayName": "Performance Test",
+ "entityState": [
+ "instance"
+ ],
+ "key": "",
+ "kind": "action",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "perf-test",
+ "type": "operator",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the workload specific setting of a component",
+ "displayName": "Workload Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "config",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure Labels And Annotations for the component ",
+ "displayName": "Labels and Annotations Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "labels-and-annotations",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View relationships for the component",
+ "displayName": "Relationships",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "relationship",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View Component Definition ",
+ "displayName": "Json Schema",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "definition",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the visual styles for the component",
+ "displayName": "Styling",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Change the shape of the component",
+ "displayName": "Change Shape",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "shape",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Drag and Drop a component into a parent component in graph view",
+ "displayName": "Compound Drag And Drop",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "interaction",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "compoundDnd",
+ "type": "graph",
+ "version": "0.7.0"
+ }
+ ],
+ "component": {
+ "kind": "Rule",
+ "schema": "{\n \"description\": \"Rule is the Schema for the rules API\",\n \"properties\": {\n \"spec\": {\n \"description\": \"RuleSpec defines the desired state of Rule\",\n \"properties\": {\n \"authenticators\": {\n \"items\": {\n \"description\": \"Authenticator represents a handler that authenticates provided credentials.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config configures the handler. Configuration keys vary per handler.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"handler\": {\n \"description\": \"Name is the name of a handler\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"handler\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"authorizer\": {\n \"description\": \"Authorizer represents a handler that authorizes the subject (\\\"user\\\") from the previously validated credentials making the request.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config configures the handler. Configuration keys vary per handler.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"handler\": {\n \"description\": \"Name is the name of a handler\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"handler\"\n ],\n \"type\": \"object\"\n },\n \"configMapName\": {\n \"description\": \"ConfigMapName points to the K8s ConfigMap that contains these rules\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"pattern\": \"[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\",\n \"type\": \"string\"\n },\n \"errors\": {\n \"items\": {\n \"description\": \"Error represents a handler that is responsible for executing logic when an error happens.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config configures the handler. Configuration keys vary per handler.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"handler\": {\n \"description\": \"Name is the name of a handler\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"handler\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"match\": {\n \"description\": \"Match defines the URL(s) that an access rule should match.\",\n \"properties\": {\n \"methods\": {\n \"description\": \"Methods represent an array of HTTP methods (e.g. GET, POST, PUT, DELETE, ...)\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"url\": {\n \"description\": \"URL is the URL that should be matched. It supports regex templates.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"methods\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"mutators\": {\n \"items\": {\n \"description\": \"Mutator represents a handler that transforms the HTTP request before forwarding it.\",\n \"properties\": {\n \"config\": {\n \"description\": \"Config configures the handler. Configuration keys vary per handler.\",\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"handler\": {\n \"description\": \"Name is the name of a handler\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"handler\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"upstream\": {\n \"description\": \"Upstream represents the location of a server where requests matching a rule should be forwarded to.\",\n \"properties\": {\n \"preserveHost\": {\n \"description\": \"PreserveHost includes the host and port of the url value if set to false. If true, the host and port of the ORY Oathkeeper Proxy will be used instead.\",\n \"type\": \"boolean\"\n },\n \"stripPath\": {\n \"description\": \"StripPath replaces the provided path prefix when forwarding the requested URL to the upstream URL.\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL defines the target URL for incoming requests\",\n \"maxLength\": 256,\n \"minLength\": 3,\n \"pattern\": \"^(?:https?:\\\\/\\\\/)?(?:[^@\\\\/\\\\n]+@)?(?:www\\\\.)?([^:\\\\/\\\\n]+)\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"match\"\n ],\n \"type\": \"object\"\n }\n },\n \"title\": \"Rule\",\n \"type\": \"object\"\n}",
+ "version": "oathkeeper.ory.sh/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Rule",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "https://github.com/GaloyMoney/charts/releases/download/galoy-v0.33.114/galoy-0.33.114.tgz"
+ },
+ "model": {
+ "category": {
+ "name": "Uncategorized"
+ },
+ "displayName": "Galoy",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#00B39F",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "source_uri": "https://github.com/GaloyMoney/charts/releases/download/galoy-v0.33.114/galoy-0.33.114.tgz",
+ "styleOverrides": "",
+ "svgColor": "",
+ "svgComplete": "",
+ "svgWhite": ""
+ },
+ "model": {
+ "version": "0.33.114"
+ },
+ "name": "galoy",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "artifacthub",
+ "name": "Artifact Hub",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Uncategorized",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#00B39F",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "svgColor": "",
+ "svgWhite": ""
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/galoy/0.33.114/v1.0.0/model.json b/server/meshmodel/galoy/0.33.114/v1.0.0/model.json
new file mode 100644
index 00000000000..0d592571be0
--- /dev/null
+++ b/server/meshmodel/galoy/0.33.114/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Uncategorized"
+ },
+ "displayName": "Galoy",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#00B39F",
+ "secondaryColor": "#00D3A9",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "",
+ "svgComplete": "",
+ "svgWhite": ""
+ },
+ "model": {
+ "version": "0.33.114"
+ },
+ "name": "galoy",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "artifacthub",
+ "name": "Artifact Hub",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Uncategorized",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/grafana-operator/2.7.9/v1.0.0/components/GrafanaConnection.json b/server/meshmodel/grafana-operator/2.7.9/v1.0.0/components/GrafanaConnection.json
index 7067e21bfa7..22c2c54b3b7 100644
--- a/server/meshmodel/grafana-operator/2.7.9/v1.0.0/components/GrafanaConnection.json
+++ b/server/meshmodel/grafana-operator/2.7.9/v1.0.0/components/GrafanaConnection.json
@@ -137,7 +137,18 @@
"genealogy": "",
"isAnnotation": false,
"isNamespaced": true,
- "published": false
+ "published": false,
+ "transitions": {
+ "connected": [
+ "disconnected",
+ "deleted"
+ ],
+ "deleted": [],
+ "disconnected": [
+ "connected",
+ "deleted"
+ ]
+ }
},
"model": {
"category": {
diff --git a/server/meshmodel/jaeger-operator/jaeger-3.1.2/v1.0.0/components/Jaeger.json b/server/meshmodel/jaeger-operator/jaeger-3.1.2/v1.0.0/components/Jaeger.json
new file mode 100644
index 00000000000..f39cc69ac16
--- /dev/null
+++ b/server/meshmodel/jaeger-operator/jaeger-3.1.2/v1.0.0/components/Jaeger.json
@@ -0,0 +1,195 @@
+{
+ "capabilities": [
+ {
+ "description": "Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.",
+ "displayName": "Performance Test",
+ "entityState": [
+ "instance"
+ ],
+ "key": "",
+ "kind": "action",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "perf-test",
+ "type": "operator",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the workload specific setting of a component",
+ "displayName": "Workload Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "config",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure Labels And Annotations for the component ",
+ "displayName": "Labels and Annotations Configuration",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "labels-and-annotations",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View relationships for the component",
+ "displayName": "Relationships",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "relationship",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "View Component Definition ",
+ "displayName": "Json Schema",
+ "entityState": [
+ "declaration",
+ "instance"
+ ],
+ "key": "",
+ "kind": "view",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "definition",
+ "type": "configuration",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Configure the visual styles for the component",
+ "displayName": "Styling",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Change the shape of the component",
+ "displayName": "Change Shape",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "mutate",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "shape",
+ "type": "style",
+ "version": "0.7.0"
+ },
+ {
+ "description": "Drag and Drop a component into a parent component in graph view",
+ "displayName": "Compound Drag And Drop",
+ "entityState": [
+ "declaration"
+ ],
+ "key": "",
+ "kind": "interaction",
+ "metadata": null,
+ "schemaVersion": "capability.meshery.io/v1alpha1",
+ "status": "enabled",
+ "subType": "compoundDnd",
+ "type": "graph",
+ "version": "0.7.0"
+ }
+ ],
+ "component": {
+ "kind": "Jaeger",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"agent\": {\n \"nullable\": true,\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"dnsPolicy\": {\n \"type\": \"string\"\n },\n \"hostNetwork\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"type\": \"string\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"sidecarSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"strategy\": {\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"allInOne\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metricsStorage\": {\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"type\": \"string\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"strategy\": {\n \"properties\": {\n \"rollingUpdate\": {\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"tracingEnabled\": {\n \"type\": \"boolean\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"collector\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"autoscale\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"kafkaSecretName\": {\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"maxReplicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minReplicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"options\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"type\": \"string\"\n },\n \"replicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"serviceType\": {\n \"type\": \"string\"\n },\n \"strategy\": {\n \"properties\": {\n \"rollingUpdate\": {\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ingester\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"autoscale\": {\n \"type\": \"boolean\"\n },\n \"config\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"kafkaSecretName\": {\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"maxReplicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minReplicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"options\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"replicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"strategy\": {\n \"properties\": {\n \"rollingUpdate\": {\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"ingress\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"hosts\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ingressClassName\": {\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"openshift\": {\n \"properties\": {\n \"delegateUrls\": {\n \"type\": \"string\"\n },\n \"htpasswdFile\": {\n \"type\": \"string\"\n },\n \"sar\": {\n \"type\": \"string\"\n },\n \"skipLogout\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"pathType\": {\n \"type\": \"string\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"security\": {\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"tls\": {\n \"items\": {\n \"properties\": {\n \"hosts\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"query\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcNodePort\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"metricsStorage\": {\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"nodePort\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"options\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"priorityClassName\": {\n \"type\": \"string\"\n },\n \"replicas\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"serviceType\": {\n \"type\": \"string\"\n },\n \"strategy\": {\n \"properties\": {\n \"rollingUpdate\": {\n \"properties\": {\n \"maxSurge\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"maxUnavailable\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"tracingEnabled\": {\n \"type\": \"boolean\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"sampling\": {\n \"properties\": {\n \"options\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"storage\": {\n \"properties\": {\n \"cassandraCreateSchema\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"datacenter\": {\n \"type\": \"string\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\"\n },\n \"timeout\": {\n \"type\": \"string\"\n },\n \"traceTTL\": {\n \"type\": \"string\"\n },\n \"ttlSecondsAfterFinished\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"dependencies\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"backoffLimit\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"cassandraClientAuthEnabled\": {\n \"type\": \"boolean\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"elasticsearchClientNodeOnly\": {\n \"type\": \"boolean\"\n },\n \"elasticsearchNodesWanOnly\": {\n \"type\": \"boolean\"\n },\n \"elasticsearchTimeRange\": {\n \"type\": \"string\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"javaOpts\": {\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"schedule\": {\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"sparkMaster\": {\n \"type\": \"string\"\n },\n \"successfulJobsHistoryLimit\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ttlSecondsAfterFinished\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"elasticsearch\": {\n \"properties\": {\n \"doNotProvision\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nodeCount\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"nodeSelector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"proxyResources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"redundancyPolicy\": {\n \"enum\": [\n \"FullRedundancy\",\n \"MultipleRedundancy\",\n \"SingleRedundancy\",\n \"ZeroRedundancy\"\n ],\n \"type\": \"string\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"storage\": {\n \"properties\": {\n \"size\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"storageClassName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"useCertManagement\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"esIndexCleaner\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"backoffLimit\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"numberOfDays\": {\n \"type\": \"integer\"\n },\n \"priorityClassName\": {\n \"type\": \"string\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"schedule\": {\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"successfulJobsHistoryLimit\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ttlSecondsAfterFinished\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"esRollover\": {\n \"properties\": {\n \"affinity\": {\n \"properties\": {\n \"nodeAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"preference\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"preference\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"properties\": {\n \"nodeSelectorTerms\": {\n \"items\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchFields\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"nodeSelectorTerms\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"podAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"podAntiAffinity\": {\n \"properties\": {\n \"preferredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"podAffinityTerm\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"podAffinityTerm\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"requiredDuringSchedulingIgnoredDuringExecution\": {\n \"items\": {\n \"properties\": {\n \"labelSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaceSelector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"namespaces\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"topologyKey\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"topologyKey\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"backoffLimit\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"conditions\": {\n \"type\": \"string\"\n },\n \"containerSecurityContext\": {\n \"properties\": {\n \"allowPrivilegeEscalation\": {\n \"type\": \"boolean\"\n },\n \"capabilities\": {\n \"properties\": {\n \"add\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"drop\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"privileged\": {\n \"type\": \"boolean\"\n },\n \"procMount\": {\n \"type\": \"string\"\n },\n \"readOnlyRootFilesystem\": {\n \"type\": \"boolean\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"type\": \"string\"\n },\n \"imagePullSecrets\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"livenessProbe\": {\n \"properties\": {\n \"exec\": {\n \"properties\": {\n \"command\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"grpc\": {\n \"properties\": {\n \"port\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"service\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"httpGet\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"terminationGracePeriodSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timeoutSeconds\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"readTTL\": {\n \"type\": \"string\"\n },\n \"resources\": {\n \"nullable\": true,\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"schedule\": {\n \"type\": \"string\"\n },\n \"securityContext\": {\n \"properties\": {\n \"fsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"fsGroupChangePolicy\": {\n \"type\": \"string\"\n },\n \"runAsGroup\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"runAsNonRoot\": {\n \"type\": \"boolean\"\n },\n \"runAsUser\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"seLinuxOptions\": {\n \"properties\": {\n \"level\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"seccompProfile\": {\n \"properties\": {\n \"localhostProfile\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"supplementalGroups\": {\n \"items\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"sysctls\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"windowsOptions\": {\n \"properties\": {\n \"gmsaCredentialSpec\": {\n \"type\": \"string\"\n },\n \"gmsaCredentialSpecName\": {\n \"type\": \"string\"\n },\n \"hostProcess\": {\n \"type\": \"boolean\"\n },\n \"runAsUserName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"serviceAccount\": {\n \"type\": \"string\"\n },\n \"successfulJobsHistoryLimit\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ttlSecondsAfterFinished\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n },\n \"grpcPlugin\": {\n \"properties\": {\n \"image\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"strategy\": {\n \"type\": \"string\"\n },\n \"tolerations\": {\n \"items\": {\n \"properties\": {\n \"effect\": {\n \"type\": \"string\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"tolerationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"ui\": {\n \"properties\": {\n \"options\": {\n \"format\": \"textarea\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"volumeMounts\": {\n \"items\": {\n \"properties\": {\n \"mountPath\": {\n \"type\": \"string\"\n },\n \"mountPropagation\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"subPath\": {\n \"type\": \"string\"\n },\n \"subPathExpr\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"mountPath\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n },\n \"volumes\": {\n \"items\": {\n \"properties\": {\n \"awsElasticBlockStore\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"azureDisk\": {\n \"properties\": {\n \"cachingMode\": {\n \"type\": \"string\"\n },\n \"diskName\": {\n \"type\": \"string\"\n },\n \"diskURI\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"diskName\",\n \"diskURI\"\n ],\n \"type\": \"object\"\n },\n \"azureFile\": {\n \"properties\": {\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n },\n \"shareName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"secretName\",\n \"shareName\"\n ],\n \"type\": \"object\"\n },\n \"cephfs\": {\n \"properties\": {\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretFile\": {\n \"type\": \"string\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"cinder\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"configMap\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"csi\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"nodePublishSecretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeAttributes\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"emptyDir\": {\n \"properties\": {\n \"medium\": {\n \"type\": \"string\"\n },\n \"sizeLimit\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n }\n },\n \"type\": \"object\"\n },\n \"ephemeral\": {\n \"properties\": {\n \"volumeClaimTemplate\": {\n \"properties\": {\n \"metadata\": {\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"finalizers\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"spec\": {\n \"properties\": {\n \"accessModes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dataSource\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"dataSourceRef\": {\n \"properties\": {\n \"apiGroup\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"resources\": {\n \"properties\": {\n \"claims\": {\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n },\n \"limits\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n },\n \"requests\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"properties\": {\n \"matchExpressions\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"operator\": {\n \"type\": \"string\"\n },\n \"values\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matchLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"storageClassName\": {\n \"type\": \"string\"\n },\n \"volumeMode\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"fc\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"targetWWNs\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"wwids\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"flexVolume\": {\n \"properties\": {\n \"driver\": {\n \"type\": \"string\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"options\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"driver\"\n ],\n \"type\": \"object\"\n },\n \"flocker\": {\n \"properties\": {\n \"datasetName\": {\n \"type\": \"string\"\n },\n \"datasetUUID\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gcePersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"partition\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"pdName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"pdName\"\n ],\n \"type\": \"object\"\n },\n \"gitRepo\": {\n \"properties\": {\n \"directory\": {\n \"type\": \"string\"\n },\n \"repository\": {\n \"type\": \"string\"\n },\n \"revision\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"repository\"\n ],\n \"type\": \"object\"\n },\n \"glusterfs\": {\n \"properties\": {\n \"endpoints\": {\n \"type\": \"string\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"endpoints\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"hostPath\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"iscsi\": {\n \"properties\": {\n \"chapAuthDiscovery\": {\n \"type\": \"boolean\"\n },\n \"chapAuthSession\": {\n \"type\": \"boolean\"\n },\n \"fsType\": {\n \"type\": \"string\"\n },\n \"initiatorName\": {\n \"type\": \"string\"\n },\n \"iqn\": {\n \"type\": \"string\"\n },\n \"iscsiInterface\": {\n \"type\": \"string\"\n },\n \"lun\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"portals\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"targetPortal\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"iqn\",\n \"lun\",\n \"targetPortal\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"nfs\": {\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"server\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\",\n \"server\"\n ],\n \"type\": \"object\"\n },\n \"persistentVolumeClaim\": {\n \"properties\": {\n \"claimName\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"claimName\"\n ],\n \"type\": \"object\"\n },\n \"photonPersistentDisk\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"pdID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"pdID\"\n ],\n \"type\": \"object\"\n },\n \"portworxVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"volumeID\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumeID\"\n ],\n \"type\": \"object\"\n },\n \"projected\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"sources\": {\n \"items\": {\n \"properties\": {\n \"configMap\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"downwardAPI\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"fieldRef\": {\n \"properties\": {\n \"apiVersion\": {\n \"type\": \"string\"\n },\n \"fieldPath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"fieldPath\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"resourceFieldRef\": {\n \"properties\": {\n \"containerName\": {\n \"type\": \"string\"\n },\n \"divisor\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"pattern\": \"^(\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\\\+|-)?(([0-9]+(\\\\.[0-9]*)?)|(\\\\.[0-9]+))))?$\",\n \"x-kubernetes-int-or-string\": true\n },\n \"resource\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"resource\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"serviceAccountToken\": {\n \"properties\": {\n \"audience\": {\n \"type\": \"string\"\n },\n \"expirationSeconds\": {\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"quobyte\": {\n \"properties\": {\n \"group\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"registry\": {\n \"type\": \"string\"\n },\n \"tenant\": {\n \"type\": \"string\"\n },\n \"user\": {\n \"type\": \"string\"\n },\n \"volume\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"registry\",\n \"volume\"\n ],\n \"type\": \"object\"\n },\n \"rbd\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"image\": {\n \"type\": \"string\"\n },\n \"keyring\": {\n \"type\": \"string\"\n },\n \"monitors\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pool\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"user\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"image\",\n \"monitors\"\n ],\n \"type\": \"object\"\n },\n \"scaleIO\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"gateway\": {\n \"type\": \"string\"\n },\n \"protectionDomain\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"sslEnabled\": {\n \"type\": \"boolean\"\n },\n \"storageMode\": {\n \"type\": \"string\"\n },\n \"storagePool\": {\n \"type\": \"string\"\n },\n \"system\": {\n \"type\": \"string\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"gateway\",\n \"secretRef\",\n \"system\"\n ],\n \"type\": \"object\"\n },\n \"secret\": {\n \"properties\": {\n \"defaultMode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"items\": {\n \"items\": {\n \"properties\": {\n \"key\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"path\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"optional\": {\n \"type\": \"boolean\"\n },\n \"secretName\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"storageos\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\"\n },\n \"secretRef\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-map-type\": \"atomic\"\n },\n \"volumeName\": {\n \"type\": \"string\"\n },\n \"volumeNamespace\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"vsphereVolume\": {\n \"properties\": {\n \"fsType\": {\n \"type\": \"string\"\n },\n \"storagePolicyID\": {\n \"type\": \"string\"\n },\n \"storagePolicyName\": {\n \"type\": \"string\"\n },\n \"volumePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"volumePath\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-type\": \"atomic\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"Jaeger\",\n \"type\": \"object\"\n}",
+ "version": "jaegertracing.io/v1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "Jaeger",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/jaegertracing/helm-charts/main/charts/jaeger-operator/crds"
+ },
+ "model": {
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Jaeger Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#67cfe3",
+ "secondaryColor": "#ACFFFF",
+ "shape": "circle",
+ "source_uri": "git://github.com/jaegertracing/helm-charts/main/charts/jaeger-operator/crds",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 449.70001 512.20001\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#221f1f;}.cls-2,.cls-7{fill:none;}.cls-3{fill:#fff;}.cls-4{fill:#67cfe3;}.cls-5{fill:#dfcaa3;}.cls-6{fill:#648c1a;}.cls-7{stroke:#dfcaa3;stroke-linecap:round;stroke-linejoin:round;stroke-width:0;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M80.86432,496.156c-5.906,1.28554-10.39046,3.72107-10.01635,5.44s5.46523,2.07033,11.371.78479c5.906-1.28532,10.39047-3.72085,10.01613-5.43981C91.861,495.222,86.7701,494.87065,80.86432,496.156Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M55.96457,494.75672c-6.337.50454-11.36432,2.2895-11.22921,3.98684s5.38162,2.66428,11.71859,2.15973c6.33675-.50454,11.3641-2.28949,11.229-3.98683S62.30132,494.25218,55.96457,494.75672Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M35.63913,492.92093c-4.21781.57455-7.491,2.11159-7.31105,3.4328.18014,1.32144,3.74515,1.92653,7.963,1.352,4.21781-.57477,7.491-2.11158,7.311-3.433C43.42194,492.95148,39.85694,492.34616,35.63913,492.92093Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M20.72942,491.06686c-4.07267.5915-7.24863,1.93679-7.09345,3.005.15495,1.06795,3.5824,1.45454,7.65529.863,4.07267-.59127,7.24862-1.93656,7.09345-3.00473C28.22975,490.862,24.80231,490.47559,20.72942,491.06686Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M17.90127,490.7195c4.07289-.59127,7.24884-1.93656,7.09367-3.00472s-3.5824-1.45454-7.65529-.86327c-4.07289.59149-7.24862,1.93678-7.09367,3.005C10.40115,490.92462,13.8286,491.311,17.90127,490.7195Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M16.97691,485.70375c3.53981-.51413,6.3-1.68329,6.1653-2.61167-.13489-.92837-3.11375-1.26413-6.65334-.75023-3.53982.51391-6.3,1.68329-6.1653,2.61166C10.45845,485.88189,13.43732,486.21765,16.97691,485.70375Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M193.99476,475.52932c-6.00188,0-10.86737,1.58809-10.86737,3.547s4.86549,3.54695,10.86737,3.54695c6.00165,0,10.86713-1.58809,10.86713-3.54695S199.99641,475.52932,193.99476,475.52932Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M221.97549,475.06915c-4.00044,0-7.2435,1.449-7.2435,3.23637s3.24306,3.23638,7.2435,3.23638c4.00065,0,7.24372-1.449,7.24372-3.23638S225.97614,475.06915,221.97549,475.06915Z\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" cx=\"244.55743\" cy=\"475.99328\" rx=\"7.93755\" ry=\"2.61902\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M261.9778,470.28749c-3.19156,0-5.7787,1.243-5.7787,2.7762s2.58714,2.7762,5.7787,2.7762,5.77893-1.243,5.77893-2.7762S265.16936,470.28749,261.9778,470.28749Z\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" cx=\"277.00568\" cy=\"469.90401\" rx=\"5.85919\" ry=\"2.69951\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.34355,103.67729a.04473.04473,0,0,1-.02052-.00112l.02988.01494Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M45.75113,154.80916a14.95375,14.95375,0,0,0,.66484,5.61438A15.02674,15.02674,0,0,1,45.75113,154.80916Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.28,103.64005l.00647.00647a.04653.04653,0,0,1,.03523.00178l.00579.00491-.00379-.0058A.13218.13218,0,0,1,298.28,103.64005Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M65.24273,158.77615a37.39156,37.39156,0,0,0-2.88211-4.58435,25.884,25.884,0,0,0-1.90668-2.3022,21.40346,21.40346,0,0,1,1.90312,2.3022A37.74322,37.74322,0,0,1,65.24273,158.77615Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M53.40374,147.83945l.28493.03656c.18149.0272.36007.06867.54022.10278-.18126-.03522-.35963-.078-.54022-.10635l-.28493-.03656-.37991-.00736a9.79746,9.79746,0,0,0-1.44652.12419,9.79427,9.79427,0,0,1,1.44652-.1204Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"51.577 147.953 51.263 148.04 50.945 148.124 51.263 148.041 51.577 147.953\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.48445,103.88486a4.62684,4.62684,0,0,1,.36163,1.60347,18.89375,18.89375,0,0,1-.21872,3.54539,19.09019,19.09019,0,0,0,.22251-3.54539A4.69719,4.69719,0,0,0,298.48445,103.88486Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M299.80678,97.5325l.4274.14982-.4274-.15339-.85836-.29229a12.25519,12.25519,0,0,0-1.82286-.40911,11.82825,11.82825,0,0,1,1.82286.41268Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M70.71821,174.77141c-.0457-.31592-.10256-.67554-.18616-1.08065-.02743-.14068-.06912-.278-.09766-.41848.02787.14135.06733.28025.09409.42205C70.61387,174.097,70.67184,174.45549,70.71821,174.77141Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M277.15907,121.74355a39.98011,39.98011,0,0,1,1.24207-7.15966,35.36415,35.36415,0,0,1,4.11681-9.68371,20.91539,20.91539,0,0,1,1.89108-2.59449,20.91706,20.91706,0,0,0-1.8913,2.59449,35.3971,35.3971,0,0,0-4.12038,9.68371,40.78716,40.78716,0,0,0-1.24185,7.1561c-.08762.86929-.08048,1.56691-.09877,2.03087-.00356.231-.00156.40823.00112.53063-.00268-.12174-.00446-.29831-.00089-.53063C277.075,123.3069,277.06788,122.60928,277.15907,121.74355Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M289.75921,97.99624a14.0104,14.0104,0,0,0-3.08454,2.03489,20.94357,20.94357,0,0,0-2.26564,2.27456,20.92581,20.92581,0,0,1,2.26586-2.27456A14.009,14.009,0,0,1,289.75921,97.99624Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M294.32015,103.19081a8.94028,8.94028,0,0,0-3.7514,1.70959,20.81423,20.81423,0,0,0-3.43368,3.33492,20.82677,20.82677,0,0,1,3.43725-3.33492,8.90084,8.90084,0,0,1,3.75162-1.70959q.47322-.05787.94844-.09855l-.00245-.00022C294.95222,103.11768,294.63808,103.15067,294.32015,103.19081Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M304.55544,105.57974a20.151,20.151,0,0,1-1.311,5.52186,20.254,20.254,0,0,0,1.31475-5.52565,10.76661,10.76661,0,0,0-.229-2.79984A10.68341,10.68341,0,0,1,304.55544,105.57974Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M52.87936,154.17307l-.05262-.01047a.12584.12584,0,0,0,.051.01092Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"298.459 103.742 298.45 103.738 298.422 103.735 298.459 103.742\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M289.75921,97.99624a14.01687,14.01687,0,0,1,3.50905-1.15779A14.01393,14.01393,0,0,0,289.75921,97.99624Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.37119,103.71675l.00379.00357a.24963.24963,0,0,0,.04749.01471A.11108.11108,0,0,1,298.37119,103.71675Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"70.901 176.175 70.893 176.102 70.901 176.174 70.901 176.175\"\u003e\u003c/polygon\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"298.36 103.694 298.353 103.691 298.354 103.692 298.36 103.694\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M51.59627,170.21159c.02051.02653.03723.05574.05774.08205.23455.31391.4595.58458.66083.81912-.20066-.23432-.4245-.50543-.657-.81912C51.63885,170.26911,51.61566,170.23656,51.59627,170.21159Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M54.32431,154.96634a5.38665,5.38665,0,0,0-1.2608-.73507A5.45964,5.45964,0,0,1,54.32431,154.96634Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M52.34026,171.14286c.19463.22608.36854.42.501.579.2885.31771.453.48225.453.48225l-.00089-.00469c-.00134-.00133-.16454-.161-.45215-.48113C52.70857,171.56268,52.53489,171.36938,52.34026,171.14286Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M48.08432,164.60546c.0107.0214.01583.045.02653.06644.02341.04682.05329.08985.07692.13667-.0243-.04816-.04905-.08807-.07335-.13667C48.10416,164.65116,48.09458,164.62641,48.08432,164.60546Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M51.64309,163.51767c.4129,2.52761.86951,4.70474,1.16893,6.23888C52.5126,168.21884,52.056,166.04528,51.64309,163.51767Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"303.325 100.116 303.314 100.097 303.294 100.072 303.314 100.097 303.325 100.116\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M189.10363,288.719c-.548.06934-1.096.14247-1.65119.23388a38.3278,38.3278,0,0,0-7.878,2.18382,38.36808,38.36808,0,0,1,7.88158-2.18382C188.0076,288.865,188.55561,288.7883,189.10363,288.719Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M196.942,288.57159c-.17189-.01538-.33353-.04459-.50721-.0573q-1.83335-.12875-3.67047-.07736,1.835-.05117,3.67047.07759C196.60843,288.52723,196.77007,288.55643,196.942,288.57159Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"298.302 103.668 298.302 103.668 298.057 103.556 298.302 103.668\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M214.36657,339.52287l-2.47655-.0622-.012-.00023c-2.778-.06933-5.40592-.13823-7.57458-.13823l-.00981-.00022H204.292a33.76128,33.76128,0,0,0-4.04369.15339q-1.60124.214-3.178.57344.35817,2.32494.86149,4.62269c.02007.0923.04258.18416.0631.27646.31792,1.46123.68713,2.99291,1.13192,4.4887,1.19079,3.99619,2.8529,7.6564,5.05188,8.4782h-.00357a8.09249,8.09249,0,0,0,1.88818.40756c3.42678.36809,9.24739-.66485,9.1435-8.88576q-.00737-.58893-.05128-1.1763C214.85239,344.20576,214.58573,341.43335,214.36657,339.52287Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M193.46859,349.43667c-.01137-.05953-.0272-.11527-.039-.17458-.237-1.20015-.5333-2.35058-.84231-3.42945-.03723-.13132-.07157-.2633-.10969-.3944-.42339-1.43314-.85926-2.69794-1.2006-3.61406a83.47177,83.47177,0,0,0-14.29726,7.61249l-.18617.11682c.65548,3.03371,2.36753,8.79525,6.25092,11.243a7.878,7.878,0,0,0,6.74586.71635,5.23573,5.23573,0,0,0,3.43793-3.07139C194.28526,356.01889,194.0875,352.63291,193.46859,349.43667Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M295.23715,123.92425l.00112-.00111c.00312-.01383.2283-.993.65637-2.64712C295.46345,122.9417,295.23715,123.92425,295.23715,123.92425Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.31568,103.67573c.01583.014.02408.03076.04459.041-.02029-.01026-.02787-.02675-.0408-.0408Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M254.05118,311.24963a9.59552,9.59552,0,0,0-.44479-1.68775,11.49739,11.49739,0,0,0-1.81305-3.19513c-2.00946-2.5479-5.2396-4.78433-9.50423-6.52849-6.78354-2.77263-15.70364-4.22271-26.51259-4.31769l-4.74866-.03657a7.32238,7.32238,0,0,1,.89493,3.61629c-.08762,6.22081-8.00331,12.43806-18.76834,14.648q-.76417.16053-1.53414.29229c-7.973,1.32256-15.28538.08562-19.81176-2.80184a9.80461,9.80461,0,0,1-4.26374-4.87908l-.00044-.00112-3.89029,1.3152c-1.55577.52639-10.889,3.87-17.88813,10.1383a25.5708,25.5708,0,0,0-6.18849,7.90522,17.59325,17.59325,0,0,0-1.5736,5.2396,16.94661,16.94661,0,0,0,.48961,7.05421,16.05017,16.05017,0,0,0,3.37148,6.07055c3.83188,4.37967,10.09639,6.99512,16.752,6.99512a20.01475,20.01475,0,0,0,9.669-2.30131c1.69867-.93863,3.51417-2.07479,5.43557-3.27651,4.93126-3.09324,10.76659-6.751,17.55861-8.937a40.36893,40.36893,0,0,1,7.11262-1.61975q.33276-.0438.77588-.07669c.51635-.03835,1.17651-.062,1.91114-.078.52461-.01137,1.07129-.02052,1.7038-.02052h.00112q3.83556.02475,7.66978.14247c1.62019.04013,3.34874.08405,5.11809.11772,1.76868.03389,3.57838.05752,5.36022.05752h.00178c3.93556,0,7.28118-.1146,10.15191-.35851a33.928,33.928,0,0,0,10.92488-2.36641c7.93331-3.54472,12.37051-10.02906,12.33283-17.73719a21.20459,21.20459,0,0,0-.23432-2.69817C254.07905,311.69665,254.08931,311.47882,254.05118,311.24963Zm-6.6034,6.96257a11.16842,11.16842,0,0,1-1.356,2.95145,12.03651,12.03651,0,0,1-1.56045,1.92452,14.54158,14.54158,0,0,1-2.19942,1.80457,19.35589,19.35589,0,0,1-2.93606,1.61128c-3.93778,1.75709-11.068,2.16977-18.46513,2.16977-6.50574,0-13.21951-.31771-18.14363-.31771a43.34184,43.34184,0,0,0-5.2309.23009,50.89,50.89,0,0,0-14.6667,4.39528c-7.3057,3.36279-13.20724,7.697-17.70486,10.18335a13.77564,13.77564,0,0,1-6.56773,1.49757c-5.85584,0-12.35534-2.88166-13.97955-8.51767a10.01213,10.01213,0,0,1-.38325-2.79627,11.775,11.775,0,0,1,.10568-1.54417c1.32924-9.98447,16.81171-16.36581,20.54237-17.765.24859-.0932.44524-.16432.58168-.21292.14559-.05173.22318-.078.22318-.078,2.54611,3.14519,6.8783,6.76883,17.8879,6.76883q2.27981,0,4.96092-.223c.17167-.0136.34245-.03567.51412-.05039,1.47751-.13354,3.029-.30923,4.70184-.55582,6.46562-.95312,11.03346-3.04419,14.258-5.469a20.03462,20.03462,0,0,0,6.76549-8.78076c.2-.5168.35784-.99414.4818-1.41953a13.06625,13.06625,0,0,0,.4245-1.93746c.01226-.09564.0165-.14626.0165-.14626,22.34093.19,31.37808,6.59337,32.00636,10.37041.03567.21292.06889.43944.09809.67755a14.52864,14.52864,0,0,1,.10747,1.558A12.40964,12.40964,0,0,1,247.44778,318.2122Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" d=\"M266.16128,203.5211a41.775,41.775,0,0,0-12.06149-3.08632,42.54948,42.54948,0,0,0-4.29674-.21694h-.00022a42.02785,42.02785,0,1,0,0,84.05568h.00022a42.48524,42.48524,0,0,0,4.29674-.21693,42.03759,42.03759,0,0,0,12.06149-80.53549Zm-22.03861,65.98763A13.25262,13.25262,0,1,1,257.37518,256.256,13.25266,13.25266,0,0,1,244.12267,269.50873Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" d=\"M126.38181,313.94467a41.89093,41.89093,0,0,0,4.31569-.8869c.68914-.18951,1.34819-.474,2.02708-.69873,1.07574-.35673,2.16754-.67934,3.20271-1.11833.81132-.344,1.57738-.79327,2.36753-1.18878.845-.42317,1.715-.78992,2.53273-1.2715a42.08161,42.08161,0,0,0,19.67911-45.73464q-.35215-1.525-.81311-3.00651a42.03321,42.03321,0,0,0-82.16638,12.494v.00357a42.01309,42.01309,0,0,0,47.7158,41.63722C125.62734,314.12192,125.99922,314.00755,126.38181,313.94467Zm-10.613-39.89552a13.25251,13.25251,0,0,1,0,26.505l-.00179-.00022a13.25229,13.25229,0,0,1,0-26.50457Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M117.76693,455.28526c-7.196,1.64382-28.36421,13.15039-46.65766,16.64606-18.28989,3.49589-34.11772,5.34416-39.67012,7.40067-5.545,2.05652-9.86251,6.166,1.03026,10.27543,10.89278,4.11324,63.71664,5.5524,68.44345,0,4.72681-5.54861-3.25845-7.95226-14.79779-7.8098-8.21891.10234-7.21429-2.76148-7.196-3.083,0,0,.515-3.59421,13.15753-5.34394,12.61687-1.7426,68.44345-6.988,67.41318-12.94952C158.46352,454.46345,124.95937,453.64165,117.76693,455.28526Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M227.52432,461.03854h-.00022c-12.54017.61735-40.90081-.8218-44.80939,5.75685-3.905,6.57508,11.51013,9.04094,35.76511,6.988,24.25475-2.05673,58.57691-4.72681,60.01629-12.12749,1.43916-7.40067-6.37063-5.96152-7.19623-10.68833-.81823-4.72681,8.63539-4.72681,10.48366-11.71458,1.8485-6.988-12.74105-6.16619-25.69034-6.16619s-34.5304,1.23114-36.58691,8.01447c-2.05673,6.78332,9.86631,6.78332,18.29346,8.42715,8.42715,1.6436,5.96129,4.72681,5.96129,4.72681C243.34836,458.57269,240.0607,460.42118,227.52432,461.03854Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M422.05663,385.0301v.00357a30.592,30.592,0,0,1-7.78036,11.93374c-6.137,5.80813-11.51014,9.28574-16.31364,10.55679,26.53421-3.72954,42.28534-8.37587,42.28534-13.41325C440.248,390.87814,433.7313,387.80608,422.05663,385.0301Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M21.41945,394.111c0,3.50681,7.64169,6.81988,21.223,9.76776a67.46813,67.46813,0,0,1,.5333-19.65235C29.26581,387.20723,21.41945,390.56043,21.41945,394.111Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M376.67,377.6622c-1.68753-12.3685-6.96592-17.91711-11.616-22.8156-4.336-4.55892-8.43071-8.86547-7.11218-16.76668,1.21643-7.31305,7.03192-11.80955,16.53281-12.97849-5.77135-39.00149-14.22413-88.20549-25.09506-130.184-5.428-20.96354-14.01233-35.52388-25.526-45.204C310.67771,156.453,294.828,163.861,277.13365,171.53548q-19.1283,8.27977-38.53038,15.90452c-10.10375,10.84173-21.14257,21.52627-27.90783,24.56912a31.21262,31.21262,0,0,1-12.82132,3.03193,19.75473,19.75473,0,0,1-16.12368-7.63456,52.42567,52.42567,0,0,1-7.14874,1.50493c-1.98338.20824-4.90584.45661-8.55869.71969a11.25822,11.25822,0,0,1-1.84828,11.2252c-2.9588,3.5688-7.73309,5.36245-14.5017,5.36245-9.7312,0-23.59013-3.71126-42.11747-11.196q-3.74894-1.519-7.53222-2.95145-2.12595.01071-4.25549.01093h-.01092c-17.70531,0-31.53883-.55538-42.38412-1.44295-11.87911,24.5874-6.71755,51.86315-2.37065,74.39025,4.16787,21.592,18.62588,60.00916,32.03557,93.01613,4.97139,12.2481,9.80053,23.74352,13.90642,33.36525,36.302,3.21452,82.83925,5.13949,133.58452,5.13949,60.39264,0,114.78719-2.73607,153.09106-7.10838-2.7907-11.4845-6.32672-27.46951-6.93315-31.53147ZM266.16128,280.97093a41.79662,41.79662,0,0,1-12.06149,3.08566,42.48524,42.48524,0,0,1-4.29674.21693h-.00022a42.02785,42.02785,0,1,1,0-84.05568h.00022a42.54948,42.54948,0,0,1,4.29674.21694,42.038,42.038,0,0,1,12.06149,80.53615ZM77.52717,272.53687v-.00357a42.03492,42.03492,0,0,1,82.16638-12.494q.46052,1.48052.81311,3.00651a42.04,42.04,0,0,1-19.67911,45.73464c-.81778.48158-1.68774.84833-2.53273,1.2715-.79015.39551-1.55621.84476-2.36753,1.18878-1.03517.439-2.127.7616-3.20271,1.11833-.67889.22473-1.33794.50922-2.02708.69873a41.89093,41.89093,0,0,1-4.31569.8869c-.38259.06288-.75447.17725-1.13884.22942a42.01309,42.01309,0,0,1-47.7158-41.63722Zm112.26315,88.976a7.878,7.878,0,0,1-6.74586-.71635c-3.88339-2.44779-5.59544-8.20933-6.25092-11.243l.18617-.11682a83.47177,83.47177,0,0,1,14.29726-7.61249c.34134.91612.77721,2.18092,1.2006,3.61406.03812.1311.07246.26308.10969.3944.309,1.07887.60531,2.2293.84231,3.42945.01182.05931.02765.115.039.17458.61891,3.19624.81667,6.58222-.24034,9.00482A5.23573,5.23573,0,0,1,189.79032,361.51288Zm16.27306-3.19045a8.09249,8.09249,0,0,1-1.88818-.40756h.00357c-2.199-.8218-3.86109-4.482-5.05188-8.4782-.44479-1.49579-.814-3.02747-1.13192-4.4887-.02052-.0923-.043-.18416-.0631-.27646q-.5-2.29752-.86149-4.62269,1.57516-.35884,3.178-.57344a33.76128,33.76128,0,0,1,4.04369-.15339h.00156l.00981.00022c2.16866,0,4.79659.0689,7.57458.13823l.012.00023,2.47655.0622c.21916,1.91048.48582,4.68289.789,8.7375q.04415.58725.05128,1.1763C215.31077,357.65758,209.49016,358.69052,206.06338,358.32243Zm35.94793-25.96279a33.928,33.928,0,0,1-10.92488,2.36641c-2.87073.24391-6.21635.35851-10.15191.35851h-.00178c-1.78184,0-3.59154-.02363-5.36022-.05752-1.76935-.03367-3.4979-.07759-5.11809-.11772q-3.83389-.11772-7.66978-.14247h-.00112c-.63251,0-1.17919.00915-1.7038.02052-.73463.01605-1.39479.03968-1.91114.078q-.44278.03277-.77588.07669a40.36893,40.36893,0,0,0-7.11262,1.61975c-6.792,2.186-12.62735,5.8438-17.55861,8.937-1.9214,1.20172-3.7369,2.33788-5.43557,3.27651a20.01475,20.01475,0,0,1-9.669,2.30131c-6.65557,0-12.92008-2.61545-16.752-6.99512a16.05017,16.05017,0,0,1-3.37148-6.07055,16.94661,16.94661,0,0,1-.48961-7.05421,17.59325,17.59325,0,0,1,1.5736-5.2396A25.5708,25.5708,0,0,1,145.766,317.812c6.99914-6.2683,16.33236-9.61191,17.88813-10.1383l3.89029-1.3152a7.22014,7.22014,0,0,1-.29586-1.16158c-.88311-5.335,4.28715-10.86134,12.32592-14.06026a38.3278,38.3278,0,0,1,7.878-2.18382c.55516-.09141,1.10317-.16454,1.65119-.23388q1.8233-.23074,3.66065-.282,1.835-.05117,3.67047.07736c.17368.01271.33532.04192.50721.0573,5.867.52082,10.68878,2.52159,13.16979,5.552a8.53683,8.53683,0,0,1,.91611,1.36045l4.74866.03657c10.80895.095,19.72905,1.54506,26.51259,4.31769,4.26463,1.74416,7.49477,3.98059,9.50423,6.52849a11.49739,11.49739,0,0,1,1.81305,3.19513,9.59552,9.59552,0,0,1,.44479,1.68775c.03813.22919.02787.447.05864.67465a21.20459,21.20459,0,0,1,.23432,2.69817C254.38182,322.33058,249.94462,328.81492,242.01131,332.35964Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M304.33026,102.77611a7.92079,7.92079,0,0,0-.2205-1.03561,5.36251,5.36251,0,0,0-.482-1.09581l-.30322-.52884-.01092-.01895-.0194-.02475-.39708-.50142a6.91464,6.91464,0,0,0-2.04558-1.60347l-.16075-.08406-.0767-.04392-.30321-.12775-.02564-.01092-.05106-.01829-.4274-.14982-.85836-.29229a11.82825,11.82825,0,0,0-1.82286-.41268,16.60171,16.60171,0,0,0-1.91405-.14626,18.4614,18.4614,0,0,0-1.94325.15718,14.01078,14.01078,0,0,0-6.59337,3.19268,20.91808,20.91808,0,0,0-4.15694,4.86905,35.36415,35.36415,0,0,0-4.11681,9.68371,39.98011,39.98011,0,0,0-1.24207,7.15966c-.09119.86573-.084,1.56335-.10211,2.02731-.00357.23232-.00179.40889.00089.53063.00267.12507.00624.19263.00624.19263l1.315-2.38894c.83652-1.50492,2.00546-3.63813,3.452-6.09663a61.08309,61.08309,0,0,1,5.304-7.77323,20.81423,20.81423,0,0,1,3.43368-3.33492,8.94028,8.94028,0,0,1,3.7514-1.70959c.31793-.04014.63207-.07313.94978-.09877l.00245.00022.00134-.00022c.32506.03656.64656,0,.97519.05863.33242.08027.66128.0767,1.00462.18617l.80352.21916.24458.1117c-.01338-.0078-.02831-.01628-.02608-.02163l.01092.00045-.00647-.00647a.13218.13218,0,0,0,.0437.00736l.00379.0058c.01672.00847.03233.0185.02966.02475l-.0136-.00067.00936.01382.00713.00312.02587.00781.0729.03656-.00914-.00089.00936.00468-.03656-.00736a.24963.24963,0,0,1-.04749-.01471.42157.42157,0,0,1,.10947.16454,4.69719,4.69719,0,0,1,.36542,1.60347,19.09019,19.09019,0,0,1-.22251,3.54539c-.04659.33777-.07491.67688-.132,1.00975-.25573,1.53792-.58079,3.03192-.90586,4.42-.65749,2.77621-1.2822,5.13593-1.69488,6.81253-.42807,1.65409-.65325,2.63329-.65637,2.64712a24.59877,24.59877,0,0,0,1.80323-2.081,42.32149,42.32149,0,0,0,4.02563-6.02707,36.664,36.664,0,0,0,2.10021-4.47487c.02809-.07469.04927-.1632.07714-.23856a20.151,20.151,0,0,0,1.311-5.52186A10.68341,10.68341,0,0,0,304.33026,102.77611Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M298.36762,103.71318l-.01828-.02207.00446.00134-.00089-.00134-.02988-.01494-.00356-.00022c.01293.014.02051.03054.0408.0408l.01092.00268.00379.00089-.00379-.00357Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"42.964 180.96 43.541 180.96 42.964 179.919 42.964 180.96\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M46.416,160.42354a27.17617,27.17617,0,0,0,1.66835,4.18192c.01026.02095.01984.0457.0301.06644.0243.0486.049.08851.07335.13667.42517.84454.89292,1.66634,1.38832,2.47031.09186.14893.18483.30879.27557.45081.544.85234,1.12368,1.68217,1.74461,2.4819.01939.025.04258.05752.06153.08205.23254.31369.45638.5848.657.81912l.02542.0301c.19463.22652.36831.41982.501.57544.28761.32016.45081.4798.45215.48113-.00134-.0078-.06956-.37255-.18728-.97341-.07692-.39239-.17056-.86527-.29408-1.46947-.29942-1.53414-.756-3.71127-1.16893-6.23888-.20445-1.26391-.39084-2.61924-.48225-3.99263-.03523-.61869-.04593-1.255-.02765-1.86811.00179-.0544-.00468-.1117-.00245-.16588a8.18343,8.18343,0,0,1,.24948-1.81974,3.0401,3.0401,0,0,1,.52952-1.13973,1.33328,1.33328,0,0,1,.5955-.34334l.19731-.03657.31771-.06577c.04838-.00758.0408.00557.02118.02163l-.01471.01092-.03568.02586a.20709.20709,0,0,1-.10969.02921l-.002-.00045-.00157.00045a.12584.12584,0,0,1-.051-.01092l.0437.02185a.443.443,0,0,0,.17546.03656l.01761.01026a5.38665,5.38665,0,0,1,1.2608.73507,20.77418,20.77418,0,0,1,3.13426,3.09747c1.01533,1.21286,2.009,2.48392,2.95144,3.75519,1.87748,2.557,3.61629,5.05187,5.14307,7.196q1.8564,2.63328,3.80646,5.19813c.94844,1.25165,1.53971,1.95975,1.541,1.96109l-.008-.07269-.06822-.58435c-.03144-.19977-.064-.45483-.10613-.74578-.04637-.31592-.10434-.67443-.18973-1.07708-.02676-.1418-.06622-.2807-.09409-.42205-.22183-1.09269-.47087-2.17824-.75982-3.25287-.07781-.28873-.17078-.57344-.25394-.8606q-.34146-1.18989-.74-2.36129c-.31971-.94777-.67889-1.88082-1.05122-2.80853-.17279-.43029-.32885-.86661-.51279-1.29223-.57455-1.32968-1.1919-2.64109-1.87391-3.92061a37.74322,37.74322,0,0,0-2.88567-4.58435,21.40346,21.40346,0,0,0-1.90312-2.3022,19.07684,19.07684,0,0,0-2.29039-2.09219A11.25,11.25,0,0,0,56.608,148.834a10.05412,10.05412,0,0,0-1.80525-.74243c-.18638-.045-.38147-.07536-.57387-.11282-.18015-.03411-.35873-.07558-.54022-.10278l-.28493-.03656-.37991-.00714a9.79427,9.79427,0,0,0-1.44652.1204l-.31414.08784-.3177.08383-.41648.12418-.12061.05128-.24458.10947a7.05077,7.05077,0,0,0-3.2803,2.83462,7.75366,7.75366,0,0,0-.78412,1.7825,8.28838,8.28838,0,0,0-.34825,1.78273A15.02674,15.02674,0,0,0,46.416,160.42354Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M67.49276,422.84793c9.85538,0,16.79232-5.36245,21.6616-12.32458-5.57426-12.9203-14.74294-34.69114-23.43674-57.60551a43.14336,43.14336,0,0,0-8.01447,9.58494c-7.324,11.34961-13.35484,37.76321-5.75685,51.7062C55.11334,420.02424,60.20178,422.84793,67.49276,422.84793Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M415.33908,357.39985c-5.77157-14.94-18.056-25.55166-29.86936-25.79647l-.42-.03656a39.55353,39.55353,0,0,0-5.33681-.34335c-6.43262,0-14.33,1.37361-15.41871,7.91213-.75982,4.53686,1.22735,6.86,5.42443,11.27626,4.79637,5.041,11.36053,11.95225,13.333,26.38105,2.25026,16.52188,6.283,24.90131,11.985,24.90131,2.66651,0,7.5213-1.59611,15.54646-9.19767C420.47144,383.13055,419.52166,368.22686,415.33908,357.39985Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M102.51633,287.30166a13.25246,13.25246,0,0,0,13.25072,13.25228l.00179.00022a13.25251,13.25251,0,0,0,0-26.505l-.00179.00022A13.25262,13.25262,0,0,0,102.51633,287.30166Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M244.12267,243.0035a13.25262,13.25262,0,1,0,13.25251,13.2525A13.2526,13.2526,0,0,0,244.12267,243.0035Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M319.481,122.32078c-1.68753,10.04533-4.93126,21.08058-7.07918,24.09044l-2.01638,2.82012c9.13212-4.44567,17.27791-8.6646,24.19277-12.5404,24.04317-13.4788,27.03118-19.38191,27.37809-20.87234.223-.97519-.01449-1.27841-.11682-1.40259-.26286-.32886-1.95061-1.9689-9.54481-1.9689-8.2994,0-19.91544,1.89956-32.03913,4.5295Q319.92711,119.65705,319.481,122.32078Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M310.10428,149.37l-3.46669-.28493q-7.51862-.52874-15.06065-.51123c-8.9678,0-20.79208.53687-30.49407,2.83462a11.26166,11.26166,0,0,1-1.47929,12.09092c-2.37444,2.86382-6.39248,7.63433-11.20691,13.10625q13.15206-5.3358,26.17615-10.9804Q292.51156,157.88122,310.10428,149.37Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M79.82113,139.2627v-.00379a133.923,133.923,0,0,0,34.74956,4.20822c20.43781,0,63.82633-3.97078,124.81425-30.56341l1.37361-.59907a36.3938,36.3938,0,0,1,.84008-10.04534,31.4539,31.4539,0,0,1,7.32019-14.81607,49.58223,49.58223,0,0,0-1.51942-4.96046c-7.03905-3.75162-65.05724-25.36171-95.31387-25.36171a39.992,39.992,0,0,0-7.84636.672c-26.81558,5.47214-67.563,52.08968-69.02423,58.70133-.43833,2.85668-.30679,11.83519.01471,21.52626Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M173.9295,202.508a42.55732,42.55732,0,0,0,5.56333-1.15066,11.27266,11.27266,0,0,1,19.00957-8.931,11.80569,11.80569,0,0,0,2.94409-.97185c5.5524-2.64087,25.59559-24.03559,40.82434-42.35825a11.19373,11.19373,0,0,1,1.80814-1.73145c-34.79348,15.035-83.4129,31.46548-129.70537,31.46548a165.05073,165.05073,0,0,1-21.0623-1.27841l1.01533,2.988L88.537,182.75711c-.04013.01829-1.0374.40176-2.70307,1.09581q11.17759,2.60822,30.17971,10.27186c23.15916,9.35129,32.01371,9.70935,34.22718,9.57781a11.26885,11.26885,0,0,1,10.21344-.146C166.45948,203.17285,171.13145,202.8003,173.9295,202.508Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M79.29875,205.45967a22.87731,22.87731,0,0,0-2.62638-.4274,11.17895,11.17895,0,0,1-11.91189-10.95141c-3.04285,1.72431-6.0857,3.59087-8.93481,5.56333L50.75908,203.151l-3.72576-4.90584a130.9118,130.9118,0,0,1-11.09009-17.67967C26.96807,184.8027,19.95466,189.431,18.24149,193.818a1.65218,1.65218,0,0,0,.146,1.77158C19.84876,197.73371,28.54256,204.29074,79.29875,205.45967Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M241.95669,118.8066c-24.36467,10.62613-77.762,31.10051-127.386,31.10051a140.18855,140.18855,0,0,1-36.42973-4.431q1.80825,2.73965,3.57972,5.84447A151.26672,151.26672,0,0,1,90.86373,170.699a152.44449,152.44449,0,0,0,23.50987,1.69132c28.50311,0,73.05321-6.524,134.18-34.03723.9607-3.01364,2.23933-6.78689,3.821-10.98419-.12418.00736-.2448.02921-.369.02921a9.20479,9.20479,0,0,1-1.92876-.208C246.278,126.35354,243.47254,123.25941,241.95669,118.8066Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M43.54122,180.9599a128.80816,128.80816,0,0,0,8.62067,13.3914c14.7648-10.22437,34.0738-17.60676,34.0738-17.60676s-.497-1.45744-1.42467-3.83545q-1.26714-3.25164-2.68858-6.44-1.03172-2.31558-2.13321-4.59905-.45482-.93674-.92413-1.86656l-.24837-.49317q-.56987-1.11767-1.1763-2.25383l-.13154-.24836q-2.27546-4.2623-4.946-8.29561c-5.92853-8.88732-13.44246-16.44875-21.8549-16.44518a15.72243,15.72243,0,0,0-8.20442,2.44757c-15.455,9.35128-7.47737,30.74957.4604,45.204Zm2.20991-26.15074a8.28838,8.28838,0,0,1,.34825-1.78273,7.75366,7.75366,0,0,1,.78412-1.7825,7.05077,7.05077,0,0,1,3.2803-2.83462l.24458-.10947.12061-.05128.41648-.12418.3177-.084.31414-.08762a9.79746,9.79746,0,0,1,1.44652-.12419l.37991.00736.28493.03656c.18059.02832.359.07113.54022.10635.1924.03746.38749.06778.57387.11282a10.05412,10.05412,0,0,1,1.80525.74243,11.25,11.25,0,0,1,1.55554.96337,19.07684,19.07684,0,0,1,2.29039,2.09219,25.884,25.884,0,0,1,1.90668,2.3022,37.39156,37.39156,0,0,1,2.88211,4.58435c.682,1.27952,1.29936,2.59093,1.87391,3.92061.18394.42562.34.86194.51279,1.29223.37233.92771.73151,1.86076,1.05122,2.80853q.396,1.17218.74,2.36129c.08316.28716.17613.57187.25394.8606.28895,1.07463.538,2.16018.75982,3.25287.02854.14046.07023.2778.09766.41848.0836.40511.14046.76473.18616,1.08065.04214.291.07469.546.10613.74578l.06822.58435.00847.07313-.00044-.00044c-.00134-.00134-.59261-.70944-1.541-1.96109q-1.95-2.5644-3.80646-5.19813c-1.52678-2.14414-3.26559-4.639-5.14307-7.196-.94242-1.27127-1.93611-2.54233-2.95144-3.75519a20.77418,20.77418,0,0,0-3.13426-3.09747,5.45964,5.45964,0,0,0-1.2608-.73507l-.01761-.01026a.443.443,0,0,1-.17546-.03656l-.0437-.02185.05262.01047.002.00045a.20709.20709,0,0,0,.10969-.02921l.03568-.02586.01471-.01092c.01962-.01606.0272-.02921-.02118-.02163l-.31771.06577-.19731.03657a1.33328,1.33328,0,0,0-.5955.34334,3.0401,3.0401,0,0,0-.52952,1.13973,8.18343,8.18343,0,0,0-.24948,1.81974c-.00223.05418.00424.11148.00245.16588-.01828.61312-.00758,1.24942.02765,1.86811.09141,1.37339.2778,2.72872.48225,3.99263.4129,2.52761.86951,4.70117,1.16893,6.23888.12352.6042.21716,1.07708.29408,1.46947.11772.60086.18594.96561.18728.97341l.00089.00469s-.16454-.16454-.453-.48225c-.13243-.159-.30634-.35293-.501-.579l-.02542-.0301c-.20133-.23454-.42628-.50521-.66083-.81912-.02051-.02631-.03723-.05552-.05774-.08205-.62093-.79973-1.2006-1.62956-1.74461-2.4819-.09074-.142-.18371-.30188-.27557-.45081-.4954-.804-.96315-1.62577-1.38832-2.47031-.02363-.04682-.05351-.08985-.07692-.13667-.0107-.02141-.01583-.045-.02653-.06644a27.17617,27.17617,0,0,1-1.66835-4.18192A14.95375,14.95375,0,0,1,45.75113,154.80916Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M257.82086,82.97216v-.00357a8.97445,8.97445,0,0,1,1.92876.2118c4.72681,1.04119,7.91949,5.589,8.99322,11.89741,9.00794-12.65344,18.83412-19.04971,29.33249-19.04971a21.64209,21.64209,0,0,1,11.57212,3.05756c5.53791-6.73962,9.06278-11.38595,9.06278-11.38595-4.1643.75983-12.87259,1.89577-12.87259,1.89577,32.94142-12.11657,30.2894-45.058,30.2894-45.058,0,5.68037-17.0369,19.309-17.0369,19.309.75626-4.92033-1.89219-11.36031-1.89219-11.36031.75625,6.44-19.68891,23.097-19.68891,23.097,1.51228-3.02814.37634-8.32838.37634-8.32838-1.13238,6.06007-10.22058,8.32838-10.22058,8.32838,5.68016-6.81253,16.28064-42.78208,8.32838-45.05419S277.06409,34.002,277.06409,34.002c-.37991-6.05627-3.788-6.05627-3.788-6.05627,1.51585,18.92909-13.62885,34.07379-13.62885,34.07379-1.13594-3.78439-7.196-5.67659-7.196-5.67659,1.94325,4.21179-.27044,23.39282-.94978,28.83553A10.97588,10.97588,0,0,1,257.82086,82.97216Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M249.75177,119.82951a4.39961,4.39961,0,0,0,.5041.47489c.0622.04749.128.08026.19374.12418a2.70263,2.70263,0,0,0,1.00819.4711,2.99818,2.99818,0,0,0,1.05925.01828,6.34349,6.34349,0,0,0,3.17439-1.78607q1.53-3.58073,3.21809-7.09033,1.58887-3.28743,3.21453-6.27543c1.61462-8.56248-.55894-15.59418-3.75875-16.29536a2.47615,2.47615,0,0,0-.548-.05864c-3.28386,0-8.05816,5.71672-9.92851,14.22792-1.35889,6.1769-.73039,11.66732.86952,14.73559a6.8487,6.8487,0,0,0,.96783,1.42466v.00357Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M298.34934,103.69111l.01828.02207.00357.00357a.11108.11108,0,0,0,.05128.01828l.0272.00268.00914.00089-.0729-.03656-.02587-.00781-.00624-.00178Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" points=\"298.075 82.468 298.077 82.468 298.079 82.468 298.075 82.468\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M298.07734,82.46829c-18.75318.00133-32.549,28.22575-39.75952,47.40277q-2.85334,7.59385-5.12879,15.38593a11.13807,11.13807,0,0,1,2.64466.90229c10.92577-3.26937,25.06585-4.02919,35.74325-4.02919,9.03715,0,15.5866.53709,15.5866.53709C310.00194,138.69283,326.47165,82.47141,298.07734,82.46829Zm5.16714,28.63331c-.02787.07536-.04905.16387-.07714.23856a36.664,36.664,0,0,1-2.10021,4.47487,42.32149,42.32149,0,0,1-4.02563,6.02707,24.59877,24.59877,0,0,1-1.80323,2.081l-.00112.00111s.2263-.98255.65749-2.64823c.41268-1.6766,1.03739-4.03632,1.69488-6.81253.32507-1.3881.65013-2.8821.90586-4.42.05707-.33287.08539-.672.132-1.00975a18.89375,18.89375,0,0,0,.21872-3.54539,4.62684,4.62684,0,0,0-.36163-1.60347.42157.42157,0,0,0-.10947-.16454l-.00379-.00089-.01092-.00268c-.02051-.01026-.02876-.027-.04459-.041l.00379.00022.00356.00022a.04473.04473,0,0,0,.02052.00112l.0136.00067c.00267-.00625-.01294-.01628-.02966-.02475l-.00579-.00491a.04653.04653,0,0,0-.03523-.00178l-.01092-.00045c-.00223.00535.0127.01383.02608.02163l.00067.00045-.24525-.11215-.80352-.21916c-.34334-.10947-.6722-.1059-1.00462-.18617-.32863-.05863-.65013-.02207-.97519-.05863l-.00134.00022q-.47523.0408-.94844.09855a8.90084,8.90084,0,0,0-3.75162,1.70959,20.82677,20.82677,0,0,0-3.43725,3.33492,61.08309,61.08309,0,0,0-5.304,7.77323c-1.44651,2.4585-2.61545,4.59171-3.452,6.09663l-1.315,2.38894s-.00357-.06756-.00624-.19263c-.00268-.1224-.00468-.29965-.00112-.53063.01829-.464.01115-1.16158.09877-2.03087a40.78716,40.78716,0,0,1,1.24185-7.1561,35.3971,35.3971,0,0,1,4.12038-9.68371,20.93213,20.93213,0,0,1,4.15694-4.86905,14.01285,14.01285,0,0,1,6.59359-3.19268,18.4614,18.4614,0,0,1,1.94325-.15718,16.60171,16.60171,0,0,1,1.91405.14626,12.25519,12.25519,0,0,1,1.82286.40911l.85836.29229.4274.15339.05106.01829.02564.01092.30321.12775.0767.04392.16075.08406a6.91464,6.91464,0,0,1,2.04558,1.60347l.39708.50142.0194.02452.01092.01918.30322.52884a5.36251,5.36251,0,0,1,.482,1.09581,7.92079,7.92079,0,0,1,.2205,1.03561,10.76661,10.76661,0,0,1,.229,2.79984A20.254,20.254,0,0,1,303.24448,111.1016Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M197.87769,208.22473a24.72125,24.72125,0,0,0,10.0197-2.42907c7.47-3.36056,25.70885-21.67229,46.46436-46.65053a4.454,4.454,0,0,0-6.84352-5.70245l-.00936.01137c-9.03336,10.87071-34.39886,40.00589-43.14015,44.15927l-.12418.05841a18.75549,18.75549,0,0,1-4.68668,1.48664l-3.324.52238-2.43286-2.31959a4.5007,4.5007,0,0,0-3.07563-1.22,4.45515,4.45515,0,0,0-3.74782,6.84909C187.3209,203.52356,190.52071,208.22473,197.87769,208.22473Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M153.4335,209.72252l-1.30784.69405-1.47929.08762q-.53107.0301-1.063.02921c-4.16052,0-14.38132-1.31141-36.12674-10.08926-23.97-9.68371-33.46737-11.13022-36.996-11.13022a7.06957,7.06957,0,0,0-1.24563.08762,4.44992,4.44992,0,0,0-3.58352,5.17628,4.49338,4.49338,0,0,0,4.6247,3.65285l.48938-.02943.49317.04035c2.64466.21917,11.14115,1.68017,32.88658,10.46159,17.58112,7.10126,30.89226,10.703,39.57135,10.703,4.54421,0,7.6564-.979,9.2563-2.90039a4.45888,4.45888,0,0,0-3.42633-7.30213A4.51522,4.51522,0,0,0,153.4335,209.72252Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M247.72447,312.30531c-.62828-3.777-9.66543-10.18045-32.00636-10.37041,0,0-.00424.05062-.0165.14626a13.06625,13.06625,0,0,1-.4245,1.93746c-.124.42539-.28181.90273-.4818,1.41953a20.03462,20.03462,0,0,1-6.76549,8.78076c-3.22456,2.42482-7.7924,4.51589-14.258,5.469-1.67281.24659-3.22433.42228-4.70184.55582-.17167.01472-.34245.03679-.51412.05039q-2.67978.22339-4.96092.223c-11.0096,0-15.34179-3.62364-17.8879-6.76883,0,0-.07759.02631-.22318.078-.13644.0486-.33309.11972-.58168.21292-3.73066,1.39924-19.21313,7.78058-20.54237,17.765a11.775,11.775,0,0,0-.10568,1.54417,10.01213,10.01213,0,0,0,.38325,2.79627c1.62421,5.636,8.12371,8.51767,13.97955,8.51767a13.77564,13.77564,0,0,0,6.56773-1.49757c4.49762-2.48637,10.39916-6.82056,17.70486-10.18335a50.89,50.89,0,0,1,14.6667-4.39528,43.34184,43.34184,0,0,1,5.2309-.23009c4.92412,0,11.63789.31771,18.14363.31771,7.39711,0,14.52735-.41268,18.46513-2.16977a19.35589,19.35589,0,0,0,2.93606-1.61128,14.54158,14.54158,0,0,0,2.19942-1.80457,12.03651,12.03651,0,0,0,1.56045-1.92452,11.16842,11.16842,0,0,0,1.356-2.95145,12.40964,12.40964,0,0,0,.48225-3.67135,14.52864,14.52864,0,0,0-.10747-1.558C247.79336,312.74475,247.76014,312.51823,247.72447,312.30531Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\" d=\"M215.70161,302.08116a13.06625,13.06625,0,0,1-.4245,1.93746\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M171.80855,311.2387c4.52638,2.88746,11.83877,4.1244,19.81176,2.80184q.76986-.13176,1.53414-.29229c10.765-2.2099,18.68072-8.42715,18.76834-14.648a7.32238,7.32238,0,0,0-.89493-3.61629,8.53683,8.53683,0,0,0-.91611-1.36045c-2.481-3.03037-7.3028-5.03114-13.16979-5.552-.17189-.01516-.33353-.04436-.50721-.05707q-1.83335-.12876-3.67047-.07759-1.835.05149-3.66065.282c-.548.06934-1.096.146-1.64762.23388a38.36808,38.36808,0,0,0-7.88158,2.18382c-8.03877,3.19892-13.209,8.72523-12.32592,14.06026a7.22014,7.22014,0,0,0,.29586,1.16158l.00044.00112A9.80461,9.80461,0,0,0,171.80855,311.2387Z\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"27.70 -2.30 447.60 509.60\" height=\"20\" width=\"20\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003esvg {enable-background:new 0 0 504 504}\u003c/style\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.st0{fill:#fff}\u003c/style\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M401.3 371.7c-1.7-12.3-6.9-17.7-11.5-22.6-4.3-4.5-8.3-8.8-7-16.6 1.2-7.2 7-11.7 16.4-12.9-5.7-38.6-14.1-87.4-24.9-129-5.4-20.8-13.9-35.2-25.3-44.8 2.1-1.1 4.1-2.1 6.1-3.2 2.7-1.4 5.3-2.8 7.7-4.2 25.2-14.1 29.3-20.9 30.2-24.8.8-3.3-.3-5.5-1.3-6.8-2.4-3-7-4.4-14.4-4.4-8.3 0-19.5 1.7-31.2 4.2-.1 2.1-.3 4.3-.6 6.7 12-2.6 23.5-4.5 31.7-4.5 7.5 0 9.2 1.6 9.5 1.9.1.1.3.4.1 1.4-.3 1.5-3.3 7.3-27.1 20.7-6.8 3.8-14.9 8-24 12.4l-.1.1h-.2c-10.5 5.1-22.4 10.5-35.2 16.1-7.6 3.3-15.2 6.5-22.6 9.5 3.6-4.1 6.7-7.8 9-10.6 4.5-5.4 3.8-13.5-1.7-18-.4-.3-.7-.6-1.1-.8 10.5-2.7 23.4-3.4 33.2-3.4 9 0 15.4.5 15.4.5 2.8-3.9 19.1-59.6-9-59.6-24.2 0-40 47.3-44 60.7-4.5-1-9.4.5-12.5 4.3-14.8 17.8-34.4 38.7-39.9 41.5-.8.3-1.4.6-1.8.7-4.1-3.4-10.2-4-15-.9-4.2 2.6-6.3 7.3-5.9 11.9-1.6.4-3 .6-3.9.8-2.1.2-5.3.5-9.4.8l-.7-.7c-4-3.3-9.4-3.8-13.8-1.6-2.4 0-11.1-.6-32.9-9.4-21.4-8.6-32-11.1-37.4-11.6 4.4-1.9 7.3-3.1 7.3-3.1s-15-44.1-35.2-44.1c-2.6 0-5.3.7-8.1 2.4-24.2 14.6 9.6 59.1 9.6 59.1 3.9-2.7 8.1-5.2 12.3-7.4-1.2 2.4-1.7 5.2-1.2 8 1 5.4 5.2 9.3 10.2 10.3-45.4-1.5-53.4-7.6-54.8-9.6-.3-.5-.5-.9-.1-1.8 1.7-4.3 8.6-8.9 17.5-13.1-1-1.8-1.9-3.8-2.8-5.8-9.8 4.7-18.3 10.3-20.7 16.6-1.1 2.7-.8 5.3.8 7.7 1.5 2.2 5.3 7.7 33.2 10.7 2.1.2 4.3.4 6.7.6-11.8 24.4-6.7 51.4-2.3 73.7 4.7 24.2 19.6 63.7 31.8 93.4 5.7 13.9 10.7 25.7 13.8 32.8 36.1 3.2 82.4 5.1 132.9 5.1 59.7 0 113.6-2.7 151.6-7-2.4-9.2-6.2-25.2-7.2-31.2 0-.3-.1-.8-.2-1.1zm-98.6-251.5c0-.5 0-1.2.1-2 .1-1.7.5-4.2 1.2-7.1.8-2.9 2-6.2 4.1-9.6 1.1-1.7 2.4-3.4 4.1-4.8.6-.6 1.4-1.1 2.1-1.5.5-.3 1.1-.6 1.6-.8.9-.4 1.8-.6 2.7-.8.6-.1 1.3-.1 1.9-.2.6 0 1.3 0 1.9.1.6.1 1.2.2 1.8.4l.3.1.6.2.3.1.1.1h.1l.3.1h.2c.1 0 1.6 1 2 1.6l.4.5.3.5c.2.3.3.6.4.9 0 .1.1.1.1.2s0 .1.1.2c.4 1.3.4 2.5.4 3.6-.1 1.1-.3 2.1-.5 3.1-.2.9-.5 1.8-.9 2.6-.6 1.7-1.4 3.1-2.1 4.4-1.4 2.6-2.9 4.6-4 6-1.1 1.4-1.8 2.1-1.8 2.1s.2-1 .6-2.6c.4-1.7 1-4 1.7-6.7.3-1.4.6-2.9.9-4.4.3-1.5.4-3.1.4-4.5 0-.2 0-.4-.1-.6-.1-.4-.2-.8-.3-1 0-.1-.1-.1-.1-.2l-.3-.1h-.2l-.6-.2c-.3-.1-.6-.1-.9-.2h-.1c-.4-.1-.7 0-1-.1-.3 0-.6.1-.9.1-.9.2-1.9.5-2.8 1.1l-.9.6c-.3.2-.6.5-.9.7-.6.5-1.2 1.1-1.7 1.7-.3.3-.5.6-.8.9-.5.6-1 1.3-1.5 1.9-1.4 2-2.7 4-3.8 5.8-1.1 1.8-2 3.5-2.7 4.8-.2.4-.5.9-.7 1.2-.8 1.5-1.3 2.4-1.3 2.4s.2-.2.2-.6zm-87.5 72.9c.2-.1.3-.2.5-.3.5-.2 1-.3 1.5-.3.4 0 .9.1 1.3.2s.8.4 1.1.6l3.6 3 4.5-1.3c1-.3 2-.7 3.1-1.1l.2-.1.2-.1c1.4-.7 3.2-2 5.2-3.7 11.1-9.3 30-31.1 37.5-40.1.7-.9 1.8-1.4 2.9-1.4.6 0 1.5.2 2.4.9 1.6 1.3 1.8 3.7.5 5.3-5.1 6.2-10.1 11.9-14.8 17.1-6.4 7.2-12.3 13.3-17.4 18.1-.5.4-.9.9-1.3 1.3-.9.8-1.7 1.6-2.6 2.3l-2.4 2.1c-1.9 1.6-3.6 2.9-5 3.8-.9.6-1.6 1-2.3 1.3-.4.2-.8.4-1.3.5-1.3.5-2.5.9-3.7 1.2-1.6.4-3.1.6-4.6.6-.9 0-1.8-.1-2.7-.2-.9-.1-1.7-.4-2.5-.7-.4-.2-.8-.3-1.2-.5-.4-.2-.7-.4-1-.6-1.9-1.2-2.8-2.5-3-2.9-.1-.2-.3-.4-.3-.7-.2-.5-.3-1-.2-1.4 0-1 .7-2.2 1.8-2.9zm55.4 135.3c-4.1 1.8-10.1 2.6-20.1 2.6h-.5c.2 2 .4 4.3.6 7.1 0 .5.1 1 .1 1.5.1 5.7-2.1 9.1-3.9 10.9-2.5 2.5-5.9 3.9-9.8 3.9-1.8 0-3.7-.3-5.1-.8-1.2-.4-2.2-1.1-3.1-1.9-1.9 3.6-4.9 5-6.7 5.5-1.5.4-3 .7-4.4.7-7.3 0-12.8-5.4-15.3-14.9l-2.1 1.2c-2.6 1.4-5.8 2.2-9.2 2.2-6.4 0-12.3-2.5-16-6.7-3-3.5-4.3-7.8-3.7-12.5 1.9-14.2 22.2-21.4 24.5-22.2l3.7-1.3c-.1-.4-.2-.7-.3-1.1 0-.2-.1-.5-.1-.7v-.9c0-.2 0-.3.1-.5v-.2c0-.2.1-.5.2-.7.1-.2.1-.5.2-.7 0-.1.1-.1.1-.2.1-.2.1-.3.2-.5 0-.1.1-.2.1-.2.1-.2.2-.3.3-.5 0-.1.1-.1.1-.2.1-.2.3-.5.4-.7.2-.2.3-.4.5-.7 0-.1.1-.1.1-.2.1-.2.3-.3.4-.5l.2-.2.5-.5.1-.1c.4-.4.9-.9 1.4-1.3.1-.1.1-.1.2-.1.2-.2.4-.3.6-.5l.2-.2c.2-.2.5-.3.7-.5.1 0 .1-.1.2-.1l.9-.6c.4-.2.7-.4 1.1-.6.1 0 .1-.1.2-.1.8-.4 1.6-.8 2.4-1.1.1 0 .2-.1.3-.1.4-.2.9-.3 1.3-.5s.9-.3 1.3-.4c.1 0 .2-.1.3-.1.5-.1.9-.3 1.4-.4.5-.1.9-.2 1.4-.3.1 0 .2-.1.4-.1.5-.1 1-.2 1.4-.3.5-.1 1.1-.2 1.6-.2.6-.1 1.1-.1 1.7-.2h.5c.4 0 .7 0 1.1-.1h3.9c.3 0 .6.1.9.1.4 0 .8.1 1.2.2.2 0 .5.1.7.1.3.1.6.1.8.2.2 0 .3.1.5.1.3.1.6.1.9.2.1 0 .3.1.4.1l.9.3c.1 0 .2.1.3.1 1.8.6 3.4 1.4 4.6 2.4.3.2.5.4.7.6l.8.8.3.3c.1.1.2.2.2.3.1.2.2.3.3.5.1.1.1.2.2.3h4.5c10.3.1 18.8 1.5 25.3 4.1 6.5 2.7 10.5 6.5 11.2 10.9 1.6 8.8-2.7 16.4-11.3 20.2zM96.9 170.1c-1-1.2-2.3-3-3.8-5.1-1.5-2.1-3.2-4.6-5.1-7.1-.9-1.3-1.9-2.5-2.9-3.7-.4-.4-.8-.9-1.2-1.3-.4-.4-.8-.8-1.2-1.1-.3-.2-.5-.4-.8-.6-.2-.2-.5-.3-.7-.5l-.6-.3h-.2.2l-.3.1h-.2c-.3.1-.4.2-.6.3-.2.2-.4.6-.5 1.1-.3 1-.3 2.5-.2 3.8.1 1.4.3 2.7.5 4 .4 2.5.9 4.7 1.2 6.2.2.8.3 1.4.4 1.8 0 .1 0 .2.1.3 0 .2.1.4.1.4s-.2-.2-.4-.5c-.3-.3-.7-.8-1.2-1.4-.7-.9-1.6-2.2-2.6-3.8-.3-.5-.6-1.1-.9-1.7-.2-.4-.4-.8-.6-1.3-.4-.9-.8-1.9-1.1-2.9-.4-1.6-.9-3.4-.7-5.6.1-.8.3-1.7.6-2.6.1-.3.3-.6.5-.9.7-1.2 2-2.3 3.3-2.8l.2-.1.1-.1.4-.1.3-.1.3-.1c.1 0 .5-.1.7-.1h1.5c.4.1.7.1 1.1.2 1 .3 1.9.7 2.6 1.2.2.2.5.3.7.5.4.3.7.6 1 .9.5.4.9.8 1.3 1.2.7.7 1.3 1.5 1.8 2.2 1.1 1.5 2 3 2.9 4.5.8 1.5 1.5 3 2.1 4.4.4.9.7 1.8 1 2.6.2.5.4 1 .5 1.5.2.6.4 1.3.6 1.8.5 1.8.8 3.3 1.1 4.4.1.6.2 1 .2 1.4v.4c0 .4.1.6.1.6s-.6-.7-1.6-2zm2.9 19c-.2-1.3.3-2.3.6-2.8s1.1-1.3 2.4-1.6c.3-.1.5-.1.8-.1h.4c.3 0 .8 0 1.3.1.4 0 .9.1 1.4.2.9.1 2 .3 3.4.6.8.2 1.7.4 2.7.6.8.2 1.6.4 2.5.7.5.2 1.1.3 1.7.5l2.1.6c.6.2 1.3.4 1.9.6.3.1.6.2 1 .3.7.2 1.4.5 2.1.7 1.4.5 3 1 4.6 1.6l2.4.9 1.5.6c2.4.9 5 1.9 7.8 3 .8.3 1.5.6 2.3.9 1 .4 1.9.7 2.8 1.1 1.5.6 2.9 1.1 4.3 1.6.8.3 1.5.5 2.3.8 5.6 2 10.1 3.3 13.8 4.1.3.1.6.1.9.2 1.7.4 3.2.7 4.6.9.1 0 .3 0 .4.1 1.9.3 3.5.4 4.7.4h2.3l1.8-.9c.5-.3 1.1-.4 1.7-.4.3 0 .7 0 1.1.2.4.1.9.3 1.3.7.3.2.5.4.6.7.2.3.4.6.5.9 0 .1 0 .1.1.2.1.3.1.5.2.7v.5c0 .2 0 .4-.1.7-.1.2-.1.5-.3.8-.1.3-.3.5-.5.8l-.3.3c-.1.1-.2.3-.4.4-.1.1-.2.1-.3.2-.3.2-.7.5-1.2.7-.6.3-1.5.6-2.5.8-.5.1-1.1.2-1.8.2-.7.1-1.4.1-2.2.1-2.1 0-4.5-.2-7.2-.7-2.7-.4-5.7-1.1-8.9-2s-6.8-2-10.6-3.3c-3.8-1.3-7.9-2.9-12.3-4.6-5.3-2.1-9.8-3.8-13.6-5.2-.5-.2-.9-.3-1.4-.5-10.5-3.6-15.5-4.5-17.5-4.7h-.1l-.6-.1h-.9c-1.7 0-3.2-1.3-3.6-3.1zm-3.5 78.4c0-27.8 22.6-50.3 50.3-50.3s50.3 22.6 50.3 50.3c0 27.8-22.6 50.3-50.3 50.3s-50.3-22.5-50.3-50.3zm179.4 20.4c-27.8 0-50.3-22.6-50.3-50.3 0-27.8 22.6-50.3 50.3-50.3s50.3 22.6 50.3 50.3c0 27.7-22.6 50.3-50.3 50.3zM95.1 416.4c9.2 0 15.9-4.8 20.6-11.1.3-.4.5-.7.8-1.1-3.2-7.5-7.7-18.1-12.6-30.1-3.4-8.4-7-17.6-10.6-26.9-2.3 2-5 5-7.9 9.5-3.2 4.9-6.1 12.8-7.8 21.2-1.5 7.6-1.9 15.6-.6 22.4.6 2.8 1.4 5.4 2.7 7.7 3.1 5.6 8.2 8.4 15.4 8.4zm-46.3-27.3c0 3.5 7.6 6.8 21.1 9.7-1-7-.4-14.1.5-19.6-13.8 3-21.6 6.3-21.6 9.9zm398.7-9.1c-.2.6-.4 1.1-.7 1.7-1.7 3.9-4 7.3-7.1 10.2-6.1 5.8-11.5 9.2-16.2 10.5 26.4-3.7 42.1-8.3 42.1-13.3.1-3.2-6.4-6.3-18.1-9.1z\" class=\"st0\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M440.4 378.5c3.7-8.6 2.4-18.9-.7-26.9-5.7-14.8-17.9-25.3-29.6-25.6h-.4s-2.3-.3-5.3-.3c-6.4 0-14.2 1.4-15.3 7.8-.7 4.5 1.2 6.8 5.4 11.2 4.8 5 11.3 11.8 13.2 26.1.1 1 .3 2 .4 3 2.3 14.4 6.1 21.7 11.4 21.7 2.6 0 7.4-1.6 15.4-9.1 2.5-2.4 4.3-5 5.5-7.9zM102.9 137.8c-.4-10.9-.6-21.6-.1-24.8 1.4-6.5 41.8-52.7 68.4-58.1 2.2-.4 4.8-.7 7.8-.7 30 0 87.4 21.4 94.4 25.1.4.9.9 2.6 1.5 4.9-3.3 3.4-5.9 8.6-7.3 14.7-1.4 6.2-1.1 12 .4 16.4-30.3 13.2-105.7 41.7-162.3 26.4 1.2 1.8 2.4 3.7 3.5 5.8 4.3 7.5 7.4 14.8 9.1 19.2 23.4 3.7 75.1 4.5 156.2-32 1.5-4.8 3.9-11.7 7.1-19.1-1.5 1.4-3 2-4.2 1.8-3.3-.7-5.5-8.2-3.5-17.1 1.9-8.4 6.6-14.1 9.8-14.1.2 0 .4 0 .5.1 3.2.7 5.3 7.7 3.7 16.1 10.6-19.6 22.6-29.5 35.6-29.5 4.4 0 8.2 1 11.5 3 5.5-6.7 9-11.3 9-11.3-4.1.7-12.8 1.9-12.8 1.9 32.6-12 30-44.6 30-44.6 0 5.6-16.9 19.1-16.9 19.1.8-4.9-1.9-11.3-1.9-11.3.7 6.4-19.5 22.9-19.5 22.9 1.5-3 .4-8.3.4-8.3-1.1 6-10.1 8.3-10.1 8.3 5.6-6.8 16.1-42.4 8.3-44.6-7.9-2.3-18.8 23.3-18.8 23.3-.4-6-3.8-6-3.8-6C300.4 44 285.4 59 285.4 59c-1.1-3.8-7.1-5.6-7.1-5.6 1.4 3 .6 13.8-.2 21.6l-.2-.2c-3.2-3.2-67.4-27-99-27-3.4 0-6.5.3-9 .8-16.7 3.4-36.6 20.6-46.9 30.6C110.6 91 97.3 106.5 96.4 112c-.4 2.9-.4 10.2-.2 18.3 2.3 2 4.5 4.6 6.7 7.5zm41.8 312.1c-7.2 1.6-28.2 13.1-46.4 16.6-18.2 3.5-34 5.3-39.5 7.4-5.5 2-9.8 6.1 1 10.2s63.4 5.5 68.1 0c4.7-5.5-3.2-7.9-14.7-7.8-8.2.1-7.2-2.7-7.2-3.1 0 0 .5-3.6 13.1-5.3 12.6-1.7 68.1-7 67.1-12.9s-34.3-6.7-41.5-5.1z\" class=\"st0\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"108.7\" cy=\"493.7\" class=\"st0\" rx=\"10.9\" ry=\"3.2\" transform=\"rotate(-12.285 108.609 493.667)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"83.5\" cy=\"492.3\" class=\"st0\" rx=\"11.5\" ry=\"3.1\" transform=\"rotate(-4.542 83.463 492.308) scale(1.00004)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"63.3\" cy=\"489.8\" class=\"st0\" rx=\"7.7\" ry=\"2.4\" transform=\"rotate(-7.765 63.331 489.89)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"48.4\" cy=\"487.5\" class=\"st0\" rx=\"7.4\" ry=\"1.9\" transform=\"rotate(-8.27 48.382 487.623)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"45.1\" cy=\"483.3\" class=\"st0\" rx=\"7.4\" ry=\"1.9\" transform=\"rotate(-8.27 45.007 483.428)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"44.2\" cy=\"478.5\" class=\"st0\" rx=\"6.4\" ry=\"1.7\" transform=\"rotate(-8.27 44.156 478.58)\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M253.9 455.7c-12.5.6-40.7-.8-44.6 5.7-3.9 6.5 11.5 9 35.6 7s58.3-4.7 59.7-12.1c1.4-7.4-6.3-5.9-7.2-10.6-.8-4.7 8.6-4.7 10.4-11.7 1.8-7-12.7-6.1-25.6-6.1s-34.4 1.2-36.4 8 9.8 6.8 18.2 8.4c8.4 1.6 5.9 4.7 5.9 4.7-.2 4.2-3.5 6.1-16 6.7z\" class=\"st0\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"220.6\" cy=\"473.6\" class=\"st0\" rx=\"10.8\" ry=\"3.5\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"248.4\" cy=\"472.9\" class=\"st0\" rx=\"7.2\" ry=\"3.2\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"270.9\" cy=\"470.6\" class=\"st0\" rx=\"7.9\" ry=\"2.6\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"288.2\" cy=\"467.6\" class=\"st0\" rx=\"5.8\" ry=\"2.8\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"303.2\" cy=\"464.5\" class=\"st0\" rx=\"5.8\" ry=\"2.7\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M146.7 225.9c-10.8 0-20.6 4.1-28 10.8-.5.4-1 .9-1.4 1.4-7.5 7.5-12.2 17.9-12.2 29.4 0 4.3.7 8.5 1.9 12.4.4 1.3.9 2.6 1.4 3.8.5 1.2 1.1 2.5 1.8 3.6 1 1.8 2 3.5 3.2 5.1 7.6 10.2 19.7 16.7 33.4 16.7 23 0 41.6-18.6 41.6-41.6s-18.8-41.6-41.7-41.6zm-3.8 69.4c-3.6 0-6.9-1.5-9.3-3.8-.5-.5-.9-1-1.3-1.5-.3-.4-.5-.7-.7-1.1-.5-.8-.8-1.6-1.1-2.5-.1-.2-.1-.4-.2-.6-.3-1.1-.5-2.3-.5-3.6 0-7.2 5.9-13.1 13.1-13.1 5.9 0 10.9 3.9 12.5 9.2.4 1.2.6 2.5.6 3.9 0 7.2-5.8 13.1-13.1 13.1zM290 198.4c-2.5-.9-5.2-1.6-8-2-2.1-.3-4.2-.5-6.3-.5-9.3 0-18 3.1-24.9 8.3-3.2 2.4-6.1 5.2-8.5 8.5-1.2 1.6-2.3 3.3-3.2 5.1l-1.8 3.6c-.5 1.2-1 2.5-1.4 3.8-1.2 3.9-1.9 8.1-1.9 12.4 0 5 .9 9.9 2.5 14.3.2.6.5 1.3.7 1.9 1.1 2.5 2.3 4.9 3.8 7.1.4.6.8 1.1 1.2 1.6.8 1.1 1.7 2.1 2.5 3.1 1.3 1.5 2.8 2.9 4.3 4.1 7.2 5.9 16.4 9.5 26.5 9.5 23 0 41.6-18.6 41.6-41.6.2-18-11.2-33.3-27.1-39.2zm-14.8 65.1c-1.6.7-3.3 1-5.1 1-1.4 0-2.7-.2-3.9-.6-1.5-.5-3-1.2-4.2-2.2-.4-.3-.8-.7-1.2-1-.3-.3-.6-.6-.8-.9-.4-.5-.8-1.1-1.2-1.7-.3-.5-.6-1-.8-1.6-.3-.7-.5-1.4-.7-2.1-.2-1-.4-1.9-.4-3 0-.5 0-.9.1-1.3 0-.4.1-.9.2-1.3 1-4.7 4.4-8.5 9-9.9 1.2-.4 2.5-.6 3.9-.6 1.8 0 3.5.4 5.1 1 .8.3 1.5.7 2.2 1.2.4.2.7.5 1 .8 2.9 2.4 4.8 6.1 4.8 10.1 0 5.4-3.3 10.1-8 12.1zm-51 80.8c-.4-1-.7-2-.9-2.8-.9-3.1-1.6-6.3-2-8.7-1.1.4-2.2.8-3.3 1.3-3.7 1.8-7 3.8-10 5.7-.1 0-.1.1-.2.1.8 3.7 3.3 11.8 9.8 11.8.8 0 1.7-.1 2.6-.4 3-1 4-3.8 4-7zm8.9-13.6c-1.9 0-3.3.1-4.2.2-.6.1-1.1.2-1.7.3.4 2.3 1 5.5 1.9 8.5 1.1 3.8 2.7 7.3 4.8 8.1.6.2 1.7.4 2.9.4 3.3 0 7.7-1.5 7.6-8.5v-1.1c-.3-3.4-.5-5.8-.7-7.6-1.1 0-2.3-.1-3.3-.1-2.6-.1-5.2-.2-7.3-.2z\" class=\"st0\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M245.5 299.4s-1.2 14-20.9 16.9c-3.7.6-6.9.8-9.7.8-10.5 0-14.6-3.5-17.1-6.5 0 0-18.9 6.4-20.4 17.2-1.1 8.1 6.7 12.3 13.6 12.3 2.3 0 4.5-.5 6.3-1.4 6.9-3.8 17.2-12.1 30.9-13.9 1.2-.2 3-.2 5-.2 4.7 0 11.1.3 17.3.3 7.1 0 13.9-.4 17.6-2.1 8.5-3.8 8.5-10.3 7.9-13.5-.6-3.6-9.2-9.7-30.5-9.9z\" class=\"st0\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "jaeger-3.1.2"
+ },
+ "name": "jaeger-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Tracing",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "enabled",
+ "styles": {
+ "primaryColor": "#67cfe3",
+ "secondaryColor": "#ACFFFF",
+ "shape": "circle",
+ "svgColor": "\u003csvg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 449.70001 512.20001\"\u003e\u003cdefs\u003e\u003cstyle\u003e.cls-1{fill:#221f1f;}.cls-2,.cls-7{fill:none;}.cls-3{fill:#fff;}.cls-4{fill:#67cfe3;}.cls-5{fill:#dfcaa3;}.cls-6{fill:#648c1a;}.cls-7{stroke:#dfcaa3;stroke-linecap:round;stroke-linejoin:round;stroke-width:0;}\u003c/style\u003e\u003c/defs\u003e\u003cpath class=\"cls-1\" d=\"M80.86432,496.156c-5.906,1.28554-10.39046,3.72107-10.01635,5.44s5.46523,2.07033,11.371.78479c5.906-1.28532,10.39047-3.72085,10.01613-5.43981C91.861,495.222,86.7701,494.87065,80.86432,496.156Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M55.96457,494.75672c-6.337.50454-11.36432,2.2895-11.22921,3.98684s5.38162,2.66428,11.71859,2.15973c6.33675-.50454,11.3641-2.28949,11.229-3.98683S62.30132,494.25218,55.96457,494.75672Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M35.63913,492.92093c-4.21781.57455-7.491,2.11159-7.31105,3.4328.18014,1.32144,3.74515,1.92653,7.963,1.352,4.21781-.57477,7.491-2.11158,7.311-3.433C43.42194,492.95148,39.85694,492.34616,35.63913,492.92093Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M20.72942,491.06686c-4.07267.5915-7.24863,1.93679-7.09345,3.005.15495,1.06795,3.5824,1.45454,7.65529.863,4.07267-.59127,7.24862-1.93656,7.09345-3.00473C28.22975,490.862,24.80231,490.47559,20.72942,491.06686Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M17.90127,490.7195c4.07289-.59127,7.24884-1.93656,7.09367-3.00472s-3.5824-1.45454-7.65529-.86327c-4.07289.59149-7.24862,1.93678-7.09367,3.005C10.40115,490.92462,13.8286,491.311,17.90127,490.7195Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M16.97691,485.70375c3.53981-.51413,6.3-1.68329,6.1653-2.61167-.13489-.92837-3.11375-1.26413-6.65334-.75023-3.53982.51391-6.3,1.68329-6.1653,2.61166C10.45845,485.88189,13.43732,486.21765,16.97691,485.70375Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M193.99476,475.52932c-6.00188,0-10.86737,1.58809-10.86737,3.547s4.86549,3.54695,10.86737,3.54695c6.00165,0,10.86713-1.58809,10.86713-3.54695S199.99641,475.52932,193.99476,475.52932Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M221.97549,475.06915c-4.00044,0-7.2435,1.449-7.2435,3.23637s3.24306,3.23638,7.2435,3.23638c4.00065,0,7.24372-1.449,7.24372-3.23638S225.97614,475.06915,221.97549,475.06915Z\"/\u003e\u003cellipse class=\"cls-1\" cx=\"244.55743\" cy=\"475.99328\" rx=\"7.93755\" ry=\"2.61902\"/\u003e\u003cpath class=\"cls-1\" d=\"M261.9778,470.28749c-3.19156,0-5.7787,1.243-5.7787,2.7762s2.58714,2.7762,5.7787,2.7762,5.77893-1.243,5.77893-2.7762S265.16936,470.28749,261.9778,470.28749Z\"/\u003e\u003cellipse class=\"cls-1\" cx=\"277.00568\" cy=\"469.90401\" rx=\"5.85919\" ry=\"2.69951\"/\u003e\u003cpath class=\"cls-2\" d=\"M298.34355,103.67729a.04473.04473,0,0,1-.02052-.00112l.02988.01494Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M45.75113,154.80916a14.95375,14.95375,0,0,0,.66484,5.61438A15.02674,15.02674,0,0,1,45.75113,154.80916Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M298.28,103.64005l.00647.00647a.04653.04653,0,0,1,.03523.00178l.00579.00491-.00379-.0058A.13218.13218,0,0,1,298.28,103.64005Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M65.24273,158.77615a37.39156,37.39156,0,0,0-2.88211-4.58435,25.884,25.884,0,0,0-1.90668-2.3022,21.40346,21.40346,0,0,1,1.90312,2.3022A37.74322,37.74322,0,0,1,65.24273,158.77615Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M53.40374,147.83945l.28493.03656c.18149.0272.36007.06867.54022.10278-.18126-.03522-.35963-.078-.54022-.10635l-.28493-.03656-.37991-.00736a9.79746,9.79746,0,0,0-1.44652.12419,9.79427,9.79427,0,0,1,1.44652-.1204Z\"/\u003e\u003cpolygon class=\"cls-2\" points=\"51.577 147.953 51.263 148.04 50.945 148.124 51.263 148.041 51.577 147.953\"/\u003e\u003cpath class=\"cls-2\" d=\"M298.48445,103.88486a4.62684,4.62684,0,0,1,.36163,1.60347,18.89375,18.89375,0,0,1-.21872,3.54539,19.09019,19.09019,0,0,0,.22251-3.54539A4.69719,4.69719,0,0,0,298.48445,103.88486Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M299.80678,97.5325l.4274.14982-.4274-.15339-.85836-.29229a12.25519,12.25519,0,0,0-1.82286-.40911,11.82825,11.82825,0,0,1,1.82286.41268Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M70.71821,174.77141c-.0457-.31592-.10256-.67554-.18616-1.08065-.02743-.14068-.06912-.278-.09766-.41848.02787.14135.06733.28025.09409.42205C70.61387,174.097,70.67184,174.45549,70.71821,174.77141Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M277.15907,121.74355a39.98011,39.98011,0,0,1,1.24207-7.15966,35.36415,35.36415,0,0,1,4.11681-9.68371,20.91539,20.91539,0,0,1,1.89108-2.59449,20.91706,20.91706,0,0,0-1.8913,2.59449,35.3971,35.3971,0,0,0-4.12038,9.68371,40.78716,40.78716,0,0,0-1.24185,7.1561c-.08762.86929-.08048,1.56691-.09877,2.03087-.00356.231-.00156.40823.00112.53063-.00268-.12174-.00446-.29831-.00089-.53063C277.075,123.3069,277.06788,122.60928,277.15907,121.74355Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M289.75921,97.99624a14.0104,14.0104,0,0,0-3.08454,2.03489,20.94357,20.94357,0,0,0-2.26564,2.27456,20.92581,20.92581,0,0,1,2.26586-2.27456A14.009,14.009,0,0,1,289.75921,97.99624Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M294.32015,103.19081a8.94028,8.94028,0,0,0-3.7514,1.70959,20.81423,20.81423,0,0,0-3.43368,3.33492,20.82677,20.82677,0,0,1,3.43725-3.33492,8.90084,8.90084,0,0,1,3.75162-1.70959q.47322-.05787.94844-.09855l-.00245-.00022C294.95222,103.11768,294.63808,103.15067,294.32015,103.19081Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M304.55544,105.57974a20.151,20.151,0,0,1-1.311,5.52186,20.254,20.254,0,0,0,1.31475-5.52565,10.76661,10.76661,0,0,0-.229-2.79984A10.68341,10.68341,0,0,1,304.55544,105.57974Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M52.87936,154.17307l-.05262-.01047a.12584.12584,0,0,0,.051.01092Z\"/\u003e\u003cpolygon class=\"cls-2\" points=\"298.459 103.742 298.45 103.738 298.422 103.735 298.459 103.742\"/\u003e\u003cpath class=\"cls-2\" d=\"M289.75921,97.99624a14.01687,14.01687,0,0,1,3.50905-1.15779A14.01393,14.01393,0,0,0,289.75921,97.99624Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M298.37119,103.71675l.00379.00357a.24963.24963,0,0,0,.04749.01471A.11108.11108,0,0,1,298.37119,103.71675Z\"/\u003e\u003cpolygon class=\"cls-2\" points=\"70.901 176.175 70.893 176.102 70.901 176.174 70.901 176.175\"/\u003e\u003cpolygon class=\"cls-2\" points=\"298.36 103.694 298.353 103.691 298.354 103.692 298.36 103.694\"/\u003e\u003cpath class=\"cls-2\" d=\"M51.59627,170.21159c.02051.02653.03723.05574.05774.08205.23455.31391.4595.58458.66083.81912-.20066-.23432-.4245-.50543-.657-.81912C51.63885,170.26911,51.61566,170.23656,51.59627,170.21159Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M54.32431,154.96634a5.38665,5.38665,0,0,0-1.2608-.73507A5.45964,5.45964,0,0,1,54.32431,154.96634Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M52.34026,171.14286c.19463.22608.36854.42.501.579.2885.31771.453.48225.453.48225l-.00089-.00469c-.00134-.00133-.16454-.161-.45215-.48113C52.70857,171.56268,52.53489,171.36938,52.34026,171.14286Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M48.08432,164.60546c.0107.0214.01583.045.02653.06644.02341.04682.05329.08985.07692.13667-.0243-.04816-.04905-.08807-.07335-.13667C48.10416,164.65116,48.09458,164.62641,48.08432,164.60546Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M51.64309,163.51767c.4129,2.52761.86951,4.70474,1.16893,6.23888C52.5126,168.21884,52.056,166.04528,51.64309,163.51767Z\"/\u003e\u003cpolygon class=\"cls-2\" points=\"303.325 100.116 303.314 100.097 303.294 100.072 303.314 100.097 303.325 100.116\"/\u003e\u003cpath class=\"cls-2\" d=\"M189.10363,288.719c-.548.06934-1.096.14247-1.65119.23388a38.3278,38.3278,0,0,0-7.878,2.18382,38.36808,38.36808,0,0,1,7.88158-2.18382C188.0076,288.865,188.55561,288.7883,189.10363,288.719Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M196.942,288.57159c-.17189-.01538-.33353-.04459-.50721-.0573q-1.83335-.12875-3.67047-.07736,1.835-.05117,3.67047.07759C196.60843,288.52723,196.77007,288.55643,196.942,288.57159Z\"/\u003e\u003cpolygon class=\"cls-2\" points=\"298.302 103.668 298.302 103.668 298.057 103.556 298.302 103.668\"/\u003e\u003cpath class=\"cls-2\" d=\"M214.36657,339.52287l-2.47655-.0622-.012-.00023c-2.778-.06933-5.40592-.13823-7.57458-.13823l-.00981-.00022H204.292a33.76128,33.76128,0,0,0-4.04369.15339q-1.60124.214-3.178.57344.35817,2.32494.86149,4.62269c.02007.0923.04258.18416.0631.27646.31792,1.46123.68713,2.99291,1.13192,4.4887,1.19079,3.99619,2.8529,7.6564,5.05188,8.4782h-.00357a8.09249,8.09249,0,0,0,1.88818.40756c3.42678.36809,9.24739-.66485,9.1435-8.88576q-.00737-.58893-.05128-1.1763C214.85239,344.20576,214.58573,341.43335,214.36657,339.52287Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M193.46859,349.43667c-.01137-.05953-.0272-.11527-.039-.17458-.237-1.20015-.5333-2.35058-.84231-3.42945-.03723-.13132-.07157-.2633-.10969-.3944-.42339-1.43314-.85926-2.69794-1.2006-3.61406a83.47177,83.47177,0,0,0-14.29726,7.61249l-.18617.11682c.65548,3.03371,2.36753,8.79525,6.25092,11.243a7.878,7.878,0,0,0,6.74586.71635,5.23573,5.23573,0,0,0,3.43793-3.07139C194.28526,356.01889,194.0875,352.63291,193.46859,349.43667Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M295.23715,123.92425l.00112-.00111c.00312-.01383.2283-.993.65637-2.64712C295.46345,122.9417,295.23715,123.92425,295.23715,123.92425Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M298.31568,103.67573c.01583.014.02408.03076.04459.041-.02029-.01026-.02787-.02675-.0408-.0408Z\"/\u003e\u003cpath class=\"cls-2\" d=\"M254.05118,311.24963a9.59552,9.59552,0,0,0-.44479-1.68775,11.49739,11.49739,0,0,0-1.81305-3.19513c-2.00946-2.5479-5.2396-4.78433-9.50423-6.52849-6.78354-2.77263-15.70364-4.22271-26.51259-4.31769l-4.74866-.03657a7.32238,7.32238,0,0,1,.89493,3.61629c-.08762,6.22081-8.00331,12.43806-18.76834,14.648q-.76417.16053-1.53414.29229c-7.973,1.32256-15.28538.08562-19.81176-2.80184a9.80461,9.80461,0,0,1-4.26374-4.87908l-.00044-.00112-3.89029,1.3152c-1.55577.52639-10.889,3.87-17.88813,10.1383a25.5708,25.5708,0,0,0-6.18849,7.90522,17.59325,17.59325,0,0,0-1.5736,5.2396,16.94661,16.94661,0,0,0,.48961,7.05421,16.05017,16.05017,0,0,0,3.37148,6.07055c3.83188,4.37967,10.09639,6.99512,16.752,6.99512a20.01475,20.01475,0,0,0,9.669-2.30131c1.69867-.93863,3.51417-2.07479,5.43557-3.27651,4.93126-3.09324,10.76659-6.751,17.55861-8.937a40.36893,40.36893,0,0,1,7.11262-1.61975q.33276-.0438.77588-.07669c.51635-.03835,1.17651-.062,1.91114-.078.52461-.01137,1.07129-.02052,1.7038-.02052h.00112q3.83556.02475,7.66978.14247c1.62019.04013,3.34874.08405,5.11809.11772,1.76868.03389,3.57838.05752,5.36022.05752h.00178c3.93556,0,7.28118-.1146,10.15191-.35851a33.928,33.928,0,0,0,10.92488-2.36641c7.93331-3.54472,12.37051-10.02906,12.33283-17.73719a21.20459,21.20459,0,0,0-.23432-2.69817C254.07905,311.69665,254.08931,311.47882,254.05118,311.24963Zm-6.6034,6.96257a11.16842,11.16842,0,0,1-1.356,2.95145,12.03651,12.03651,0,0,1-1.56045,1.92452,14.54158,14.54158,0,0,1-2.19942,1.80457,19.35589,19.35589,0,0,1-2.93606,1.61128c-3.93778,1.75709-11.068,2.16977-18.46513,2.16977-6.50574,0-13.21951-.31771-18.14363-.31771a43.34184,43.34184,0,0,0-5.2309.23009,50.89,50.89,0,0,0-14.6667,4.39528c-7.3057,3.36279-13.20724,7.697-17.70486,10.18335a13.77564,13.77564,0,0,1-6.56773,1.49757c-5.85584,0-12.35534-2.88166-13.97955-8.51767a10.01213,10.01213,0,0,1-.38325-2.79627,11.775,11.775,0,0,1,.10568-1.54417c1.32924-9.98447,16.81171-16.36581,20.54237-17.765.24859-.0932.44524-.16432.58168-.21292.14559-.05173.22318-.078.22318-.078,2.54611,3.14519,6.8783,6.76883,17.8879,6.76883q2.27981,0,4.96092-.223c.17167-.0136.34245-.03567.51412-.05039,1.47751-.13354,3.029-.30923,4.70184-.55582,6.46562-.95312,11.03346-3.04419,14.258-5.469a20.03462,20.03462,0,0,0,6.76549-8.78076c.2-.5168.35784-.99414.4818-1.41953a13.06625,13.06625,0,0,0,.4245-1.93746c.01226-.09564.0165-.14626.0165-.14626,22.34093.19,31.37808,6.59337,32.00636,10.37041.03567.21292.06889.43944.09809.67755a14.52864,14.52864,0,0,1,.10747,1.558A12.40964,12.40964,0,0,1,247.44778,318.2122Z\"/\u003e\u003cpath class=\"cls-3\" d=\"M266.16128,203.5211a41.775,41.775,0,0,0-12.06149-3.08632,42.54948,42.54948,0,0,0-4.29674-.21694h-.00022a42.02785,42.02785,0,1,0,0,84.05568h.00022a42.48524,42.48524,0,0,0,4.29674-.21693,42.03759,42.03759,0,0,0,12.06149-80.53549Zm-22.03861,65.98763A13.25262,13.25262,0,1,1,257.37518,256.256,13.25266,13.25266,0,0,1,244.12267,269.50873Z\"/\u003e\u003cpath class=\"cls-3\" d=\"M126.38181,313.94467a41.89093,41.89093,0,0,0,4.31569-.8869c.68914-.18951,1.34819-.474,2.02708-.69873,1.07574-.35673,2.16754-.67934,3.20271-1.11833.81132-.344,1.57738-.79327,2.36753-1.18878.845-.42317,1.715-.78992,2.53273-1.2715a42.08161,42.08161,0,0,0,19.67911-45.73464q-.35215-1.525-.81311-3.00651a42.03321,42.03321,0,0,0-82.16638,12.494v.00357a42.01309,42.01309,0,0,0,47.7158,41.63722C125.62734,314.12192,125.99922,314.00755,126.38181,313.94467Zm-10.613-39.89552a13.25251,13.25251,0,0,1,0,26.505l-.00179-.00022a13.25229,13.25229,0,0,1,0-26.50457Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M117.76693,455.28526c-7.196,1.64382-28.36421,13.15039-46.65766,16.64606-18.28989,3.49589-34.11772,5.34416-39.67012,7.40067-5.545,2.05652-9.86251,6.166,1.03026,10.27543,10.89278,4.11324,63.71664,5.5524,68.44345,0,4.72681-5.54861-3.25845-7.95226-14.79779-7.8098-8.21891.10234-7.21429-2.76148-7.196-3.083,0,0,.515-3.59421,13.15753-5.34394,12.61687-1.7426,68.44345-6.988,67.41318-12.94952C158.46352,454.46345,124.95937,453.64165,117.76693,455.28526Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M227.52432,461.03854h-.00022c-12.54017.61735-40.90081-.8218-44.80939,5.75685-3.905,6.57508,11.51013,9.04094,35.76511,6.988,24.25475-2.05673,58.57691-4.72681,60.01629-12.12749,1.43916-7.40067-6.37063-5.96152-7.19623-10.68833-.81823-4.72681,8.63539-4.72681,10.48366-11.71458,1.8485-6.988-12.74105-6.16619-25.69034-6.16619s-34.5304,1.23114-36.58691,8.01447c-2.05673,6.78332,9.86631,6.78332,18.29346,8.42715,8.42715,1.6436,5.96129,4.72681,5.96129,4.72681C243.34836,458.57269,240.0607,460.42118,227.52432,461.03854Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M422.05663,385.0301v.00357a30.592,30.592,0,0,1-7.78036,11.93374c-6.137,5.80813-11.51014,9.28574-16.31364,10.55679,26.53421-3.72954,42.28534-8.37587,42.28534-13.41325C440.248,390.87814,433.7313,387.80608,422.05663,385.0301Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M21.41945,394.111c0,3.50681,7.64169,6.81988,21.223,9.76776a67.46813,67.46813,0,0,1,.5333-19.65235C29.26581,387.20723,21.41945,390.56043,21.41945,394.111Z\"/\u003e\u003cpath class=\"cls-4\" d=\"M376.67,377.6622c-1.68753-12.3685-6.96592-17.91711-11.616-22.8156-4.336-4.55892-8.43071-8.86547-7.11218-16.76668,1.21643-7.31305,7.03192-11.80955,16.53281-12.97849-5.77135-39.00149-14.22413-88.20549-25.09506-130.184-5.428-20.96354-14.01233-35.52388-25.526-45.204C310.67771,156.453,294.828,163.861,277.13365,171.53548q-19.1283,8.27977-38.53038,15.90452c-10.10375,10.84173-21.14257,21.52627-27.90783,24.56912a31.21262,31.21262,0,0,1-12.82132,3.03193,19.75473,19.75473,0,0,1-16.12368-7.63456,52.42567,52.42567,0,0,1-7.14874,1.50493c-1.98338.20824-4.90584.45661-8.55869.71969a11.25822,11.25822,0,0,1-1.84828,11.2252c-2.9588,3.5688-7.73309,5.36245-14.5017,5.36245-9.7312,0-23.59013-3.71126-42.11747-11.196q-3.74894-1.519-7.53222-2.95145-2.12595.01071-4.25549.01093h-.01092c-17.70531,0-31.53883-.55538-42.38412-1.44295-11.87911,24.5874-6.71755,51.86315-2.37065,74.39025,4.16787,21.592,18.62588,60.00916,32.03557,93.01613,4.97139,12.2481,9.80053,23.74352,13.90642,33.36525,36.302,3.21452,82.83925,5.13949,133.58452,5.13949,60.39264,0,114.78719-2.73607,153.09106-7.10838-2.7907-11.4845-6.32672-27.46951-6.93315-31.53147ZM266.16128,280.97093a41.79662,41.79662,0,0,1-12.06149,3.08566,42.48524,42.48524,0,0,1-4.29674.21693h-.00022a42.02785,42.02785,0,1,1,0-84.05568h.00022a42.54948,42.54948,0,0,1,4.29674.21694,42.038,42.038,0,0,1,12.06149,80.53615ZM77.52717,272.53687v-.00357a42.03492,42.03492,0,0,1,82.16638-12.494q.46052,1.48052.81311,3.00651a42.04,42.04,0,0,1-19.67911,45.73464c-.81778.48158-1.68774.84833-2.53273,1.2715-.79015.39551-1.55621.84476-2.36753,1.18878-1.03517.439-2.127.7616-3.20271,1.11833-.67889.22473-1.33794.50922-2.02708.69873a41.89093,41.89093,0,0,1-4.31569.8869c-.38259.06288-.75447.17725-1.13884.22942a42.01309,42.01309,0,0,1-47.7158-41.63722Zm112.26315,88.976a7.878,7.878,0,0,1-6.74586-.71635c-3.88339-2.44779-5.59544-8.20933-6.25092-11.243l.18617-.11682a83.47177,83.47177,0,0,1,14.29726-7.61249c.34134.91612.77721,2.18092,1.2006,3.61406.03812.1311.07246.26308.10969.3944.309,1.07887.60531,2.2293.84231,3.42945.01182.05931.02765.115.039.17458.61891,3.19624.81667,6.58222-.24034,9.00482A5.23573,5.23573,0,0,1,189.79032,361.51288Zm16.27306-3.19045a8.09249,8.09249,0,0,1-1.88818-.40756h.00357c-2.199-.8218-3.86109-4.482-5.05188-8.4782-.44479-1.49579-.814-3.02747-1.13192-4.4887-.02052-.0923-.043-.18416-.0631-.27646q-.5-2.29752-.86149-4.62269,1.57516-.35884,3.178-.57344a33.76128,33.76128,0,0,1,4.04369-.15339h.00156l.00981.00022c2.16866,0,4.79659.0689,7.57458.13823l.012.00023,2.47655.0622c.21916,1.91048.48582,4.68289.789,8.7375q.04415.58725.05128,1.1763C215.31077,357.65758,209.49016,358.69052,206.06338,358.32243Zm35.94793-25.96279a33.928,33.928,0,0,1-10.92488,2.36641c-2.87073.24391-6.21635.35851-10.15191.35851h-.00178c-1.78184,0-3.59154-.02363-5.36022-.05752-1.76935-.03367-3.4979-.07759-5.11809-.11772q-3.83389-.11772-7.66978-.14247h-.00112c-.63251,0-1.17919.00915-1.7038.02052-.73463.01605-1.39479.03968-1.91114.078q-.44278.03277-.77588.07669a40.36893,40.36893,0,0,0-7.11262,1.61975c-6.792,2.186-12.62735,5.8438-17.55861,8.937-1.9214,1.20172-3.7369,2.33788-5.43557,3.27651a20.01475,20.01475,0,0,1-9.669,2.30131c-6.65557,0-12.92008-2.61545-16.752-6.99512a16.05017,16.05017,0,0,1-3.37148-6.07055,16.94661,16.94661,0,0,1-.48961-7.05421,17.59325,17.59325,0,0,1,1.5736-5.2396A25.5708,25.5708,0,0,1,145.766,317.812c6.99914-6.2683,16.33236-9.61191,17.88813-10.1383l3.89029-1.3152a7.22014,7.22014,0,0,1-.29586-1.16158c-.88311-5.335,4.28715-10.86134,12.32592-14.06026a38.3278,38.3278,0,0,1,7.878-2.18382c.55516-.09141,1.10317-.16454,1.65119-.23388q1.8233-.23074,3.66065-.282,1.835-.05117,3.67047.07736c.17368.01271.33532.04192.50721.0573,5.867.52082,10.68878,2.52159,13.16979,5.552a8.53683,8.53683,0,0,1,.91611,1.36045l4.74866.03657c10.80895.095,19.72905,1.54506,26.51259,4.31769,4.26463,1.74416,7.49477,3.98059,9.50423,6.52849a11.49739,11.49739,0,0,1,1.81305,3.19513,9.59552,9.59552,0,0,1,.44479,1.68775c.03813.22919.02787.447.05864.67465a21.20459,21.20459,0,0,1,.23432,2.69817C254.38182,322.33058,249.94462,328.81492,242.01131,332.35964Z\"/\u003e\u003cpath d=\"M304.33026,102.77611a7.92079,7.92079,0,0,0-.2205-1.03561,5.36251,5.36251,0,0,0-.482-1.09581l-.30322-.52884-.01092-.01895-.0194-.02475-.39708-.50142a6.91464,6.91464,0,0,0-2.04558-1.60347l-.16075-.08406-.0767-.04392-.30321-.12775-.02564-.01092-.05106-.01829-.4274-.14982-.85836-.29229a11.82825,11.82825,0,0,0-1.82286-.41268,16.60171,16.60171,0,0,0-1.91405-.14626,18.4614,18.4614,0,0,0-1.94325.15718,14.01078,14.01078,0,0,0-6.59337,3.19268,20.91808,20.91808,0,0,0-4.15694,4.86905,35.36415,35.36415,0,0,0-4.11681,9.68371,39.98011,39.98011,0,0,0-1.24207,7.15966c-.09119.86573-.084,1.56335-.10211,2.02731-.00357.23232-.00179.40889.00089.53063.00267.12507.00624.19263.00624.19263l1.315-2.38894c.83652-1.50492,2.00546-3.63813,3.452-6.09663a61.08309,61.08309,0,0,1,5.304-7.77323,20.81423,20.81423,0,0,1,3.43368-3.33492,8.94028,8.94028,0,0,1,3.7514-1.70959c.31793-.04014.63207-.07313.94978-.09877l.00245.00022.00134-.00022c.32506.03656.64656,0,.97519.05863.33242.08027.66128.0767,1.00462.18617l.80352.21916.24458.1117c-.01338-.0078-.02831-.01628-.02608-.02163l.01092.00045-.00647-.00647a.13218.13218,0,0,0,.0437.00736l.00379.0058c.01672.00847.03233.0185.02966.02475l-.0136-.00067.00936.01382.00713.00312.02587.00781.0729.03656-.00914-.00089.00936.00468-.03656-.00736a.24963.24963,0,0,1-.04749-.01471.42157.42157,0,0,1,.10947.16454,4.69719,4.69719,0,0,1,.36542,1.60347,19.09019,19.09019,0,0,1-.22251,3.54539c-.04659.33777-.07491.67688-.132,1.00975-.25573,1.53792-.58079,3.03192-.90586,4.42-.65749,2.77621-1.2822,5.13593-1.69488,6.81253-.42807,1.65409-.65325,2.63329-.65637,2.64712a24.59877,24.59877,0,0,0,1.80323-2.081,42.32149,42.32149,0,0,0,4.02563-6.02707,36.664,36.664,0,0,0,2.10021-4.47487c.02809-.07469.04927-.1632.07714-.23856a20.151,20.151,0,0,0,1.311-5.52186A10.68341,10.68341,0,0,0,304.33026,102.77611Z\"/\u003e\u003cpath d=\"M298.36762,103.71318l-.01828-.02207.00446.00134-.00089-.00134-.02988-.01494-.00356-.00022c.01293.014.02051.03054.0408.0408l.01092.00268.00379.00089-.00379-.00357Z\"/\u003e\u003cpolygon class=\"cls-1\" points=\"42.964 180.96 43.541 180.96 42.964 179.919 42.964 180.96\"/\u003e\u003cpath class=\"cls-1\" d=\"M46.416,160.42354a27.17617,27.17617,0,0,0,1.66835,4.18192c.01026.02095.01984.0457.0301.06644.0243.0486.049.08851.07335.13667.42517.84454.89292,1.66634,1.38832,2.47031.09186.14893.18483.30879.27557.45081.544.85234,1.12368,1.68217,1.74461,2.4819.01939.025.04258.05752.06153.08205.23254.31369.45638.5848.657.81912l.02542.0301c.19463.22652.36831.41982.501.57544.28761.32016.45081.4798.45215.48113-.00134-.0078-.06956-.37255-.18728-.97341-.07692-.39239-.17056-.86527-.29408-1.46947-.29942-1.53414-.756-3.71127-1.16893-6.23888-.20445-1.26391-.39084-2.61924-.48225-3.99263-.03523-.61869-.04593-1.255-.02765-1.86811.00179-.0544-.00468-.1117-.00245-.16588a8.18343,8.18343,0,0,1,.24948-1.81974,3.0401,3.0401,0,0,1,.52952-1.13973,1.33328,1.33328,0,0,1,.5955-.34334l.19731-.03657.31771-.06577c.04838-.00758.0408.00557.02118.02163l-.01471.01092-.03568.02586a.20709.20709,0,0,1-.10969.02921l-.002-.00045-.00157.00045a.12584.12584,0,0,1-.051-.01092l.0437.02185a.443.443,0,0,0,.17546.03656l.01761.01026a5.38665,5.38665,0,0,1,1.2608.73507,20.77418,20.77418,0,0,1,3.13426,3.09747c1.01533,1.21286,2.009,2.48392,2.95144,3.75519,1.87748,2.557,3.61629,5.05187,5.14307,7.196q1.8564,2.63328,3.80646,5.19813c.94844,1.25165,1.53971,1.95975,1.541,1.96109l-.008-.07269-.06822-.58435c-.03144-.19977-.064-.45483-.10613-.74578-.04637-.31592-.10434-.67443-.18973-1.07708-.02676-.1418-.06622-.2807-.09409-.42205-.22183-1.09269-.47087-2.17824-.75982-3.25287-.07781-.28873-.17078-.57344-.25394-.8606q-.34146-1.18989-.74-2.36129c-.31971-.94777-.67889-1.88082-1.05122-2.80853-.17279-.43029-.32885-.86661-.51279-1.29223-.57455-1.32968-1.1919-2.64109-1.87391-3.92061a37.74322,37.74322,0,0,0-2.88567-4.58435,21.40346,21.40346,0,0,0-1.90312-2.3022,19.07684,19.07684,0,0,0-2.29039-2.09219A11.25,11.25,0,0,0,56.608,148.834a10.05412,10.05412,0,0,0-1.80525-.74243c-.18638-.045-.38147-.07536-.57387-.11282-.18015-.03411-.35873-.07558-.54022-.10278l-.28493-.03656-.37991-.00714a9.79427,9.79427,0,0,0-1.44652.1204l-.31414.08784-.3177.08383-.41648.12418-.12061.05128-.24458.10947a7.05077,7.05077,0,0,0-3.2803,2.83462,7.75366,7.75366,0,0,0-.78412,1.7825,8.28838,8.28838,0,0,0-.34825,1.78273A15.02674,15.02674,0,0,0,46.416,160.42354Z\"/\u003e\u003cpath class=\"cls-5\" d=\"M67.49276,422.84793c9.85538,0,16.79232-5.36245,21.6616-12.32458-5.57426-12.9203-14.74294-34.69114-23.43674-57.60551a43.14336,43.14336,0,0,0-8.01447,9.58494c-7.324,11.34961-13.35484,37.76321-5.75685,51.7062C55.11334,420.02424,60.20178,422.84793,67.49276,422.84793Z\"/\u003e\u003cpath class=\"cls-5\" d=\"M415.33908,357.39985c-5.77157-14.94-18.056-25.55166-29.86936-25.79647l-.42-.03656a39.55353,39.55353,0,0,0-5.33681-.34335c-6.43262,0-14.33,1.37361-15.41871,7.91213-.75982,4.53686,1.22735,6.86,5.42443,11.27626,4.79637,5.041,11.36053,11.95225,13.333,26.38105,2.25026,16.52188,6.283,24.90131,11.985,24.90131,2.66651,0,7.5213-1.59611,15.54646-9.19767C420.47144,383.13055,419.52166,368.22686,415.33908,357.39985Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M102.51633,287.30166a13.25246,13.25246,0,0,0,13.25072,13.25228l.00179.00022a13.25251,13.25251,0,0,0,0-26.505l-.00179.00022A13.25262,13.25262,0,0,0,102.51633,287.30166Z\"/\u003e\u003cpath class=\"cls-1\" d=\"M244.12267,243.0035a13.25262,13.25262,0,1,0,13.25251,13.2525A13.2526,13.2526,0,0,0,244.12267,243.0035Z\"/\u003e\u003cpath class=\"cls-6\" d=\"M319.481,122.32078c-1.68753,10.04533-4.93126,21.08058-7.07918,24.09044l-2.01638,2.82012c9.13212-4.44567,17.27791-8.6646,24.19277-12.5404,24.04317-13.4788,27.03118-19.38191,27.37809-20.87234.223-.97519-.01449-1.27841-.11682-1.40259-.26286-.32886-1.95061-1.9689-9.54481-1.9689-8.2994,0-19.91544,1.89956-32.03913,4.5295Q319.92711,119.65705,319.481,122.32078Z\"/\u003e\u003cpath class=\"cls-6\" d=\"M310.10428,149.37l-3.46669-.28493q-7.51862-.52874-15.06065-.51123c-8.9678,0-20.79208.53687-30.49407,2.83462a11.26166,11.26166,0,0,1-1.47929,12.09092c-2.37444,2.86382-6.39248,7.63433-11.20691,13.10625q13.15206-5.3358,26.17615-10.9804Q292.51156,157.88122,310.10428,149.37Z\"/\u003e\u003cpath class=\"cls-6\" d=\"M79.82113,139.2627v-.00379a133.923,133.923,0,0,0,34.74956,4.20822c20.43781,0,63.82633-3.97078,124.81425-30.56341l1.37361-.59907a36.3938,36.3938,0,0,1,.84008-10.04534,31.4539,31.4539,0,0,1,7.32019-14.81607,49.58223,49.58223,0,0,0-1.51942-4.96046c-7.03905-3.75162-65.05724-25.36171-95.31387-25.36171a39.992,39.992,0,0,0-7.84636.672c-26.81558,5.47214-67.563,52.08968-69.02423,58.70133-.43833,2.85668-.30679,11.83519.01471,21.52626Z\"/\u003e\u003cpath class=\"cls-6\" d=\"M173.9295,202.508a42.55732,42.55732,0,0,0,5.56333-1.15066,11.27266,11.27266,0,0,1,19.00957-8.931,11.80569,11.80569,0,0,0,2.94409-.97185c5.5524-2.64087,25.59559-24.03559,40.82434-42.35825a11.19373,11.19373,0,0,1,1.80814-1.73145c-34.79348,15.035-83.4129,31.46548-129.70537,31.46548a165.05073,165.05073,0,0,1-21.0623-1.27841l1.01533,2.988L88.537,182.75711c-.04013.01829-1.0374.40176-2.70307,1.09581q11.17759,2.60822,30.17971,10.27186c23.15916,9.35129,32.01371,9.70935,34.22718,9.57781a11.26885,11.26885,0,0,1,10.21344-.146C166.45948,203.17285,171.13145,202.8003,173.9295,202.508Z\"/\u003e\u003cpath class=\"cls-6\" d=\"M79.29875,205.45967a22.87731,22.87731,0,0,0-2.62638-.4274,11.17895,11.17895,0,0,1-11.91189-10.95141c-3.04285,1.72431-6.0857,3.59087-8.93481,5.56333L50.75908,203.151l-3.72576-4.90584a130.9118,130.9118,0,0,1-11.09009-17.67967C26.96807,184.8027,19.95466,189.431,18.24149,193.818a1.65218,1.65218,0,0,0,.146,1.77158C19.84876,197.73371,28.54256,204.29074,79.29875,205.45967Z\"/\u003e\u003cpath class=\"cls-5\" d=\"M241.95669,118.8066c-24.36467,10.62613-77.762,31.10051-127.386,31.10051a140.18855,140.18855,0,0,1-36.42973-4.431q1.80825,2.73965,3.57972,5.84447A151.26672,151.26672,0,0,1,90.86373,170.699a152.44449,152.44449,0,0,0,23.50987,1.69132c28.50311,0,73.05321-6.524,134.18-34.03723.9607-3.01364,2.23933-6.78689,3.821-10.98419-.12418.00736-.2448.02921-.369.02921a9.20479,9.20479,0,0,1-1.92876-.208C246.278,126.35354,243.47254,123.25941,241.95669,118.8066Z\"/\u003e\u003cpath class=\"cls-4\" d=\"M43.54122,180.9599a128.80816,128.80816,0,0,0,8.62067,13.3914c14.7648-10.22437,34.0738-17.60676,34.0738-17.60676s-.497-1.45744-1.42467-3.83545q-1.26714-3.25164-2.68858-6.44-1.03172-2.31558-2.13321-4.59905-.45482-.93674-.92413-1.86656l-.24837-.49317q-.56987-1.11767-1.1763-2.25383l-.13154-.24836q-2.27546-4.2623-4.946-8.29561c-5.92853-8.88732-13.44246-16.44875-21.8549-16.44518a15.72243,15.72243,0,0,0-8.20442,2.44757c-15.455,9.35128-7.47737,30.74957.4604,45.204Zm2.20991-26.15074a8.28838,8.28838,0,0,1,.34825-1.78273,7.75366,7.75366,0,0,1,.78412-1.7825,7.05077,7.05077,0,0,1,3.2803-2.83462l.24458-.10947.12061-.05128.41648-.12418.3177-.084.31414-.08762a9.79746,9.79746,0,0,1,1.44652-.12419l.37991.00736.28493.03656c.18059.02832.359.07113.54022.10635.1924.03746.38749.06778.57387.11282a10.05412,10.05412,0,0,1,1.80525.74243,11.25,11.25,0,0,1,1.55554.96337,19.07684,19.07684,0,0,1,2.29039,2.09219,25.884,25.884,0,0,1,1.90668,2.3022,37.39156,37.39156,0,0,1,2.88211,4.58435c.682,1.27952,1.29936,2.59093,1.87391,3.92061.18394.42562.34.86194.51279,1.29223.37233.92771.73151,1.86076,1.05122,2.80853q.396,1.17218.74,2.36129c.08316.28716.17613.57187.25394.8606.28895,1.07463.538,2.16018.75982,3.25287.02854.14046.07023.2778.09766.41848.0836.40511.14046.76473.18616,1.08065.04214.291.07469.546.10613.74578l.06822.58435.00847.07313-.00044-.00044c-.00134-.00134-.59261-.70944-1.541-1.96109q-1.95-2.5644-3.80646-5.19813c-1.52678-2.14414-3.26559-4.639-5.14307-7.196-.94242-1.27127-1.93611-2.54233-2.95144-3.75519a20.77418,20.77418,0,0,0-3.13426-3.09747,5.45964,5.45964,0,0,0-1.2608-.73507l-.01761-.01026a.443.443,0,0,1-.17546-.03656l-.0437-.02185.05262.01047.002.00045a.20709.20709,0,0,0,.10969-.02921l.03568-.02586.01471-.01092c.01962-.01606.0272-.02921-.02118-.02163l-.31771.06577-.19731.03657a1.33328,1.33328,0,0,0-.5955.34334,3.0401,3.0401,0,0,0-.52952,1.13973,8.18343,8.18343,0,0,0-.24948,1.81974c-.00223.05418.00424.11148.00245.16588-.01828.61312-.00758,1.24942.02765,1.86811.09141,1.37339.2778,2.72872.48225,3.99263.4129,2.52761.86951,4.70117,1.16893,6.23888.12352.6042.21716,1.07708.29408,1.46947.11772.60086.18594.96561.18728.97341l.00089.00469s-.16454-.16454-.453-.48225c-.13243-.159-.30634-.35293-.501-.579l-.02542-.0301c-.20133-.23454-.42628-.50521-.66083-.81912-.02051-.02631-.03723-.05552-.05774-.08205-.62093-.79973-1.2006-1.62956-1.74461-2.4819-.09074-.142-.18371-.30188-.27557-.45081-.4954-.804-.96315-1.62577-1.38832-2.47031-.02363-.04682-.05351-.08985-.07692-.13667-.0107-.02141-.01583-.045-.02653-.06644a27.17617,27.17617,0,0,1-1.66835-4.18192A14.95375,14.95375,0,0,1,45.75113,154.80916Z\"/\u003e\u003cpath class=\"cls-5\" d=\"M257.82086,82.97216v-.00357a8.97445,8.97445,0,0,1,1.92876.2118c4.72681,1.04119,7.91949,5.589,8.99322,11.89741,9.00794-12.65344,18.83412-19.04971,29.33249-19.04971a21.64209,21.64209,0,0,1,11.57212,3.05756c5.53791-6.73962,9.06278-11.38595,9.06278-11.38595-4.1643.75983-12.87259,1.89577-12.87259,1.89577,32.94142-12.11657,30.2894-45.058,30.2894-45.058,0,5.68037-17.0369,19.309-17.0369,19.309.75626-4.92033-1.89219-11.36031-1.89219-11.36031.75625,6.44-19.68891,23.097-19.68891,23.097,1.51228-3.02814.37634-8.32838.37634-8.32838-1.13238,6.06007-10.22058,8.32838-10.22058,8.32838,5.68016-6.81253,16.28064-42.78208,8.32838-45.05419S277.06409,34.002,277.06409,34.002c-.37991-6.05627-3.788-6.05627-3.788-6.05627,1.51585,18.92909-13.62885,34.07379-13.62885,34.07379-1.13594-3.78439-7.196-5.67659-7.196-5.67659,1.94325,4.21179-.27044,23.39282-.94978,28.83553A10.97588,10.97588,0,0,1,257.82086,82.97216Z\"/\u003e\u003cpath d=\"M249.75177,119.82951a4.39961,4.39961,0,0,0,.5041.47489c.0622.04749.128.08026.19374.12418a2.70263,2.70263,0,0,0,1.00819.4711,2.99818,2.99818,0,0,0,1.05925.01828,6.34349,6.34349,0,0,0,3.17439-1.78607q1.53-3.58073,3.21809-7.09033,1.58887-3.28743,3.21453-6.27543c1.61462-8.56248-.55894-15.59418-3.75875-16.29536a2.47615,2.47615,0,0,0-.548-.05864c-3.28386,0-8.05816,5.71672-9.92851,14.22792-1.35889,6.1769-.73039,11.66732.86952,14.73559a6.8487,6.8487,0,0,0,.96783,1.42466v.00357Z\"/\u003e\u003cpath class=\"cls-4\" d=\"M298.34934,103.69111l.01828.02207.00357.00357a.11108.11108,0,0,0,.05128.01828l.0272.00268.00914.00089-.0729-.03656-.02587-.00781-.00624-.00178Z\"/\u003e\u003cpolygon class=\"cls-4\" points=\"298.075 82.468 298.077 82.468 298.079 82.468 298.075 82.468\"/\u003e\u003cpath class=\"cls-4\" d=\"M298.07734,82.46829c-18.75318.00133-32.549,28.22575-39.75952,47.40277q-2.85334,7.59385-5.12879,15.38593a11.13807,11.13807,0,0,1,2.64466.90229c10.92577-3.26937,25.06585-4.02919,35.74325-4.02919,9.03715,0,15.5866.53709,15.5866.53709C310.00194,138.69283,326.47165,82.47141,298.07734,82.46829Zm5.16714,28.63331c-.02787.07536-.04905.16387-.07714.23856a36.664,36.664,0,0,1-2.10021,4.47487,42.32149,42.32149,0,0,1-4.02563,6.02707,24.59877,24.59877,0,0,1-1.80323,2.081l-.00112.00111s.2263-.98255.65749-2.64823c.41268-1.6766,1.03739-4.03632,1.69488-6.81253.32507-1.3881.65013-2.8821.90586-4.42.05707-.33287.08539-.672.132-1.00975a18.89375,18.89375,0,0,0,.21872-3.54539,4.62684,4.62684,0,0,0-.36163-1.60347.42157.42157,0,0,0-.10947-.16454l-.00379-.00089-.01092-.00268c-.02051-.01026-.02876-.027-.04459-.041l.00379.00022.00356.00022a.04473.04473,0,0,0,.02052.00112l.0136.00067c.00267-.00625-.01294-.01628-.02966-.02475l-.00579-.00491a.04653.04653,0,0,0-.03523-.00178l-.01092-.00045c-.00223.00535.0127.01383.02608.02163l.00067.00045-.24525-.11215-.80352-.21916c-.34334-.10947-.6722-.1059-1.00462-.18617-.32863-.05863-.65013-.02207-.97519-.05863l-.00134.00022q-.47523.0408-.94844.09855a8.90084,8.90084,0,0,0-3.75162,1.70959,20.82677,20.82677,0,0,0-3.43725,3.33492,61.08309,61.08309,0,0,0-5.304,7.77323c-1.44651,2.4585-2.61545,4.59171-3.452,6.09663l-1.315,2.38894s-.00357-.06756-.00624-.19263c-.00268-.1224-.00468-.29965-.00112-.53063.01829-.464.01115-1.16158.09877-2.03087a40.78716,40.78716,0,0,1,1.24185-7.1561,35.3971,35.3971,0,0,1,4.12038-9.68371,20.93213,20.93213,0,0,1,4.15694-4.86905,14.01285,14.01285,0,0,1,6.59359-3.19268,18.4614,18.4614,0,0,1,1.94325-.15718,16.60171,16.60171,0,0,1,1.91405.14626,12.25519,12.25519,0,0,1,1.82286.40911l.85836.29229.4274.15339.05106.01829.02564.01092.30321.12775.0767.04392.16075.08406a6.91464,6.91464,0,0,1,2.04558,1.60347l.39708.50142.0194.02452.01092.01918.30322.52884a5.36251,5.36251,0,0,1,.482,1.09581,7.92079,7.92079,0,0,1,.2205,1.03561,10.76661,10.76661,0,0,1,.229,2.79984A20.254,20.254,0,0,1,303.24448,111.1016Z\"/\u003e\u003cpath d=\"M197.87769,208.22473a24.72125,24.72125,0,0,0,10.0197-2.42907c7.47-3.36056,25.70885-21.67229,46.46436-46.65053a4.454,4.454,0,0,0-6.84352-5.70245l-.00936.01137c-9.03336,10.87071-34.39886,40.00589-43.14015,44.15927l-.12418.05841a18.75549,18.75549,0,0,1-4.68668,1.48664l-3.324.52238-2.43286-2.31959a4.5007,4.5007,0,0,0-3.07563-1.22,4.45515,4.45515,0,0,0-3.74782,6.84909C187.3209,203.52356,190.52071,208.22473,197.87769,208.22473Z\"/\u003e\u003cpath d=\"M153.4335,209.72252l-1.30784.69405-1.47929.08762q-.53107.0301-1.063.02921c-4.16052,0-14.38132-1.31141-36.12674-10.08926-23.97-9.68371-33.46737-11.13022-36.996-11.13022a7.06957,7.06957,0,0,0-1.24563.08762,4.44992,4.44992,0,0,0-3.58352,5.17628,4.49338,4.49338,0,0,0,4.6247,3.65285l.48938-.02943.49317.04035c2.64466.21917,11.14115,1.68017,32.88658,10.46159,17.58112,7.10126,30.89226,10.703,39.57135,10.703,4.54421,0,7.6564-.979,9.2563-2.90039a4.45888,4.45888,0,0,0-3.42633-7.30213A4.51522,4.51522,0,0,0,153.4335,209.72252Z\"/\u003e\u003cpath class=\"cls-5\" d=\"M247.72447,312.30531c-.62828-3.777-9.66543-10.18045-32.00636-10.37041,0,0-.00424.05062-.0165.14626a13.06625,13.06625,0,0,1-.4245,1.93746c-.124.42539-.28181.90273-.4818,1.41953a20.03462,20.03462,0,0,1-6.76549,8.78076c-3.22456,2.42482-7.7924,4.51589-14.258,5.469-1.67281.24659-3.22433.42228-4.70184.55582-.17167.01472-.34245.03679-.51412.05039q-2.67978.22339-4.96092.223c-11.0096,0-15.34179-3.62364-17.8879-6.76883,0,0-.07759.02631-.22318.078-.13644.0486-.33309.11972-.58168.21292-3.73066,1.39924-19.21313,7.78058-20.54237,17.765a11.775,11.775,0,0,0-.10568,1.54417,10.01213,10.01213,0,0,0,.38325,2.79627c1.62421,5.636,8.12371,8.51767,13.97955,8.51767a13.77564,13.77564,0,0,0,6.56773-1.49757c4.49762-2.48637,10.39916-6.82056,17.70486-10.18335a50.89,50.89,0,0,1,14.6667-4.39528,43.34184,43.34184,0,0,1,5.2309-.23009c4.92412,0,11.63789.31771,18.14363.31771,7.39711,0,14.52735-.41268,18.46513-2.16977a19.35589,19.35589,0,0,0,2.93606-1.61128,14.54158,14.54158,0,0,0,2.19942-1.80457,12.03651,12.03651,0,0,0,1.56045-1.92452,11.16842,11.16842,0,0,0,1.356-2.95145,12.40964,12.40964,0,0,0,.48225-3.67135,14.52864,14.52864,0,0,0-.10747-1.558C247.79336,312.74475,247.76014,312.51823,247.72447,312.30531Z\"/\u003e\u003cpath class=\"cls-7\" d=\"M215.70161,302.08116a13.06625,13.06625,0,0,1-.4245,1.93746\"/\u003e\u003cpath class=\"cls-1\" d=\"M171.80855,311.2387c4.52638,2.88746,11.83877,4.1244,19.81176,2.80184q.76986-.13176,1.53414-.29229c10.765-2.2099,18.68072-8.42715,18.76834-14.648a7.32238,7.32238,0,0,0-.89493-3.61629,8.53683,8.53683,0,0,0-.91611-1.36045c-2.481-3.03037-7.3028-5.03114-13.16979-5.552-.17189-.01516-.33353-.04436-.50721-.05707q-1.83335-.12876-3.67047-.07759-1.835.05149-3.66065.282c-.548.06934-1.096.146-1.64762.23388a38.36808,38.36808,0,0,0-7.88158,2.18382c-8.03877,3.19892-13.209,8.72523-12.32592,14.06026a7.22014,7.22014,0,0,0,.29586,1.16158l.00044.00112A9.80461,9.80461,0,0,0,171.80855,311.2387Z\"/\u003e\u003c/svg\u003e",
+ "svgWhite": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"27.70 -2.30 447.60 509.60\"\u003e\u003cstyle\u003esvg {enable-background:new 0 0 504 504}\u003c/style\u003e\u003cstyle\u003e.st0{fill:#fff}\u003c/style\u003e\u003cpath d=\"M401.3 371.7c-1.7-12.3-6.9-17.7-11.5-22.6-4.3-4.5-8.3-8.8-7-16.6 1.2-7.2 7-11.7 16.4-12.9-5.7-38.6-14.1-87.4-24.9-129-5.4-20.8-13.9-35.2-25.3-44.8 2.1-1.1 4.1-2.1 6.1-3.2 2.7-1.4 5.3-2.8 7.7-4.2 25.2-14.1 29.3-20.9 30.2-24.8.8-3.3-.3-5.5-1.3-6.8-2.4-3-7-4.4-14.4-4.4-8.3 0-19.5 1.7-31.2 4.2-.1 2.1-.3 4.3-.6 6.7 12-2.6 23.5-4.5 31.7-4.5 7.5 0 9.2 1.6 9.5 1.9.1.1.3.4.1 1.4-.3 1.5-3.3 7.3-27.1 20.7-6.8 3.8-14.9 8-24 12.4l-.1.1h-.2c-10.5 5.1-22.4 10.5-35.2 16.1-7.6 3.3-15.2 6.5-22.6 9.5 3.6-4.1 6.7-7.8 9-10.6 4.5-5.4 3.8-13.5-1.7-18-.4-.3-.7-.6-1.1-.8 10.5-2.7 23.4-3.4 33.2-3.4 9 0 15.4.5 15.4.5 2.8-3.9 19.1-59.6-9-59.6-24.2 0-40 47.3-44 60.7-4.5-1-9.4.5-12.5 4.3-14.8 17.8-34.4 38.7-39.9 41.5-.8.3-1.4.6-1.8.7-4.1-3.4-10.2-4-15-.9-4.2 2.6-6.3 7.3-5.9 11.9-1.6.4-3 .6-3.9.8-2.1.2-5.3.5-9.4.8l-.7-.7c-4-3.3-9.4-3.8-13.8-1.6-2.4 0-11.1-.6-32.9-9.4-21.4-8.6-32-11.1-37.4-11.6 4.4-1.9 7.3-3.1 7.3-3.1s-15-44.1-35.2-44.1c-2.6 0-5.3.7-8.1 2.4-24.2 14.6 9.6 59.1 9.6 59.1 3.9-2.7 8.1-5.2 12.3-7.4-1.2 2.4-1.7 5.2-1.2 8 1 5.4 5.2 9.3 10.2 10.3-45.4-1.5-53.4-7.6-54.8-9.6-.3-.5-.5-.9-.1-1.8 1.7-4.3 8.6-8.9 17.5-13.1-1-1.8-1.9-3.8-2.8-5.8-9.8 4.7-18.3 10.3-20.7 16.6-1.1 2.7-.8 5.3.8 7.7 1.5 2.2 5.3 7.7 33.2 10.7 2.1.2 4.3.4 6.7.6-11.8 24.4-6.7 51.4-2.3 73.7 4.7 24.2 19.6 63.7 31.8 93.4 5.7 13.9 10.7 25.7 13.8 32.8 36.1 3.2 82.4 5.1 132.9 5.1 59.7 0 113.6-2.7 151.6-7-2.4-9.2-6.2-25.2-7.2-31.2 0-.3-.1-.8-.2-1.1zm-98.6-251.5c0-.5 0-1.2.1-2 .1-1.7.5-4.2 1.2-7.1.8-2.9 2-6.2 4.1-9.6 1.1-1.7 2.4-3.4 4.1-4.8.6-.6 1.4-1.1 2.1-1.5.5-.3 1.1-.6 1.6-.8.9-.4 1.8-.6 2.7-.8.6-.1 1.3-.1 1.9-.2.6 0 1.3 0 1.9.1.6.1 1.2.2 1.8.4l.3.1.6.2.3.1.1.1h.1l.3.1h.2c.1 0 1.6 1 2 1.6l.4.5.3.5c.2.3.3.6.4.9 0 .1.1.1.1.2s0 .1.1.2c.4 1.3.4 2.5.4 3.6-.1 1.1-.3 2.1-.5 3.1-.2.9-.5 1.8-.9 2.6-.6 1.7-1.4 3.1-2.1 4.4-1.4 2.6-2.9 4.6-4 6-1.1 1.4-1.8 2.1-1.8 2.1s.2-1 .6-2.6c.4-1.7 1-4 1.7-6.7.3-1.4.6-2.9.9-4.4.3-1.5.4-3.1.4-4.5 0-.2 0-.4-.1-.6-.1-.4-.2-.8-.3-1 0-.1-.1-.1-.1-.2l-.3-.1h-.2l-.6-.2c-.3-.1-.6-.1-.9-.2h-.1c-.4-.1-.7 0-1-.1-.3 0-.6.1-.9.1-.9.2-1.9.5-2.8 1.1l-.9.6c-.3.2-.6.5-.9.7-.6.5-1.2 1.1-1.7 1.7-.3.3-.5.6-.8.9-.5.6-1 1.3-1.5 1.9-1.4 2-2.7 4-3.8 5.8-1.1 1.8-2 3.5-2.7 4.8-.2.4-.5.9-.7 1.2-.8 1.5-1.3 2.4-1.3 2.4s.2-.2.2-.6zm-87.5 72.9c.2-.1.3-.2.5-.3.5-.2 1-.3 1.5-.3.4 0 .9.1 1.3.2s.8.4 1.1.6l3.6 3 4.5-1.3c1-.3 2-.7 3.1-1.1l.2-.1.2-.1c1.4-.7 3.2-2 5.2-3.7 11.1-9.3 30-31.1 37.5-40.1.7-.9 1.8-1.4 2.9-1.4.6 0 1.5.2 2.4.9 1.6 1.3 1.8 3.7.5 5.3-5.1 6.2-10.1 11.9-14.8 17.1-6.4 7.2-12.3 13.3-17.4 18.1-.5.4-.9.9-1.3 1.3-.9.8-1.7 1.6-2.6 2.3l-2.4 2.1c-1.9 1.6-3.6 2.9-5 3.8-.9.6-1.6 1-2.3 1.3-.4.2-.8.4-1.3.5-1.3.5-2.5.9-3.7 1.2-1.6.4-3.1.6-4.6.6-.9 0-1.8-.1-2.7-.2-.9-.1-1.7-.4-2.5-.7-.4-.2-.8-.3-1.2-.5-.4-.2-.7-.4-1-.6-1.9-1.2-2.8-2.5-3-2.9-.1-.2-.3-.4-.3-.7-.2-.5-.3-1-.2-1.4 0-1 .7-2.2 1.8-2.9zm55.4 135.3c-4.1 1.8-10.1 2.6-20.1 2.6h-.5c.2 2 .4 4.3.6 7.1 0 .5.1 1 .1 1.5.1 5.7-2.1 9.1-3.9 10.9-2.5 2.5-5.9 3.9-9.8 3.9-1.8 0-3.7-.3-5.1-.8-1.2-.4-2.2-1.1-3.1-1.9-1.9 3.6-4.9 5-6.7 5.5-1.5.4-3 .7-4.4.7-7.3 0-12.8-5.4-15.3-14.9l-2.1 1.2c-2.6 1.4-5.8 2.2-9.2 2.2-6.4 0-12.3-2.5-16-6.7-3-3.5-4.3-7.8-3.7-12.5 1.9-14.2 22.2-21.4 24.5-22.2l3.7-1.3c-.1-.4-.2-.7-.3-1.1 0-.2-.1-.5-.1-.7v-.9c0-.2 0-.3.1-.5v-.2c0-.2.1-.5.2-.7.1-.2.1-.5.2-.7 0-.1.1-.1.1-.2.1-.2.1-.3.2-.5 0-.1.1-.2.1-.2.1-.2.2-.3.3-.5 0-.1.1-.1.1-.2.1-.2.3-.5.4-.7.2-.2.3-.4.5-.7 0-.1.1-.1.1-.2.1-.2.3-.3.4-.5l.2-.2.5-.5.1-.1c.4-.4.9-.9 1.4-1.3.1-.1.1-.1.2-.1.2-.2.4-.3.6-.5l.2-.2c.2-.2.5-.3.7-.5.1 0 .1-.1.2-.1l.9-.6c.4-.2.7-.4 1.1-.6.1 0 .1-.1.2-.1.8-.4 1.6-.8 2.4-1.1.1 0 .2-.1.3-.1.4-.2.9-.3 1.3-.5s.9-.3 1.3-.4c.1 0 .2-.1.3-.1.5-.1.9-.3 1.4-.4.5-.1.9-.2 1.4-.3.1 0 .2-.1.4-.1.5-.1 1-.2 1.4-.3.5-.1 1.1-.2 1.6-.2.6-.1 1.1-.1 1.7-.2h.5c.4 0 .7 0 1.1-.1h3.9c.3 0 .6.1.9.1.4 0 .8.1 1.2.2.2 0 .5.1.7.1.3.1.6.1.8.2.2 0 .3.1.5.1.3.1.6.1.9.2.1 0 .3.1.4.1l.9.3c.1 0 .2.1.3.1 1.8.6 3.4 1.4 4.6 2.4.3.2.5.4.7.6l.8.8.3.3c.1.1.2.2.2.3.1.2.2.3.3.5.1.1.1.2.2.3h4.5c10.3.1 18.8 1.5 25.3 4.1 6.5 2.7 10.5 6.5 11.2 10.9 1.6 8.8-2.7 16.4-11.3 20.2zM96.9 170.1c-1-1.2-2.3-3-3.8-5.1-1.5-2.1-3.2-4.6-5.1-7.1-.9-1.3-1.9-2.5-2.9-3.7-.4-.4-.8-.9-1.2-1.3-.4-.4-.8-.8-1.2-1.1-.3-.2-.5-.4-.8-.6-.2-.2-.5-.3-.7-.5l-.6-.3h-.2.2l-.3.1h-.2c-.3.1-.4.2-.6.3-.2.2-.4.6-.5 1.1-.3 1-.3 2.5-.2 3.8.1 1.4.3 2.7.5 4 .4 2.5.9 4.7 1.2 6.2.2.8.3 1.4.4 1.8 0 .1 0 .2.1.3 0 .2.1.4.1.4s-.2-.2-.4-.5c-.3-.3-.7-.8-1.2-1.4-.7-.9-1.6-2.2-2.6-3.8-.3-.5-.6-1.1-.9-1.7-.2-.4-.4-.8-.6-1.3-.4-.9-.8-1.9-1.1-2.9-.4-1.6-.9-3.4-.7-5.6.1-.8.3-1.7.6-2.6.1-.3.3-.6.5-.9.7-1.2 2-2.3 3.3-2.8l.2-.1.1-.1.4-.1.3-.1.3-.1c.1 0 .5-.1.7-.1h1.5c.4.1.7.1 1.1.2 1 .3 1.9.7 2.6 1.2.2.2.5.3.7.5.4.3.7.6 1 .9.5.4.9.8 1.3 1.2.7.7 1.3 1.5 1.8 2.2 1.1 1.5 2 3 2.9 4.5.8 1.5 1.5 3 2.1 4.4.4.9.7 1.8 1 2.6.2.5.4 1 .5 1.5.2.6.4 1.3.6 1.8.5 1.8.8 3.3 1.1 4.4.1.6.2 1 .2 1.4v.4c0 .4.1.6.1.6s-.6-.7-1.6-2zm2.9 19c-.2-1.3.3-2.3.6-2.8s1.1-1.3 2.4-1.6c.3-.1.5-.1.8-.1h.4c.3 0 .8 0 1.3.1.4 0 .9.1 1.4.2.9.1 2 .3 3.4.6.8.2 1.7.4 2.7.6.8.2 1.6.4 2.5.7.5.2 1.1.3 1.7.5l2.1.6c.6.2 1.3.4 1.9.6.3.1.6.2 1 .3.7.2 1.4.5 2.1.7 1.4.5 3 1 4.6 1.6l2.4.9 1.5.6c2.4.9 5 1.9 7.8 3 .8.3 1.5.6 2.3.9 1 .4 1.9.7 2.8 1.1 1.5.6 2.9 1.1 4.3 1.6.8.3 1.5.5 2.3.8 5.6 2 10.1 3.3 13.8 4.1.3.1.6.1.9.2 1.7.4 3.2.7 4.6.9.1 0 .3 0 .4.1 1.9.3 3.5.4 4.7.4h2.3l1.8-.9c.5-.3 1.1-.4 1.7-.4.3 0 .7 0 1.1.2.4.1.9.3 1.3.7.3.2.5.4.6.7.2.3.4.6.5.9 0 .1 0 .1.1.2.1.3.1.5.2.7v.5c0 .2 0 .4-.1.7-.1.2-.1.5-.3.8-.1.3-.3.5-.5.8l-.3.3c-.1.1-.2.3-.4.4-.1.1-.2.1-.3.2-.3.2-.7.5-1.2.7-.6.3-1.5.6-2.5.8-.5.1-1.1.2-1.8.2-.7.1-1.4.1-2.2.1-2.1 0-4.5-.2-7.2-.7-2.7-.4-5.7-1.1-8.9-2s-6.8-2-10.6-3.3c-3.8-1.3-7.9-2.9-12.3-4.6-5.3-2.1-9.8-3.8-13.6-5.2-.5-.2-.9-.3-1.4-.5-10.5-3.6-15.5-4.5-17.5-4.7h-.1l-.6-.1h-.9c-1.7 0-3.2-1.3-3.6-3.1zm-3.5 78.4c0-27.8 22.6-50.3 50.3-50.3s50.3 22.6 50.3 50.3c0 27.8-22.6 50.3-50.3 50.3s-50.3-22.5-50.3-50.3zm179.4 20.4c-27.8 0-50.3-22.6-50.3-50.3 0-27.8 22.6-50.3 50.3-50.3s50.3 22.6 50.3 50.3c0 27.7-22.6 50.3-50.3 50.3zM95.1 416.4c9.2 0 15.9-4.8 20.6-11.1.3-.4.5-.7.8-1.1-3.2-7.5-7.7-18.1-12.6-30.1-3.4-8.4-7-17.6-10.6-26.9-2.3 2-5 5-7.9 9.5-3.2 4.9-6.1 12.8-7.8 21.2-1.5 7.6-1.9 15.6-.6 22.4.6 2.8 1.4 5.4 2.7 7.7 3.1 5.6 8.2 8.4 15.4 8.4zm-46.3-27.3c0 3.5 7.6 6.8 21.1 9.7-1-7-.4-14.1.5-19.6-13.8 3-21.6 6.3-21.6 9.9zm398.7-9.1c-.2.6-.4 1.1-.7 1.7-1.7 3.9-4 7.3-7.1 10.2-6.1 5.8-11.5 9.2-16.2 10.5 26.4-3.7 42.1-8.3 42.1-13.3.1-3.2-6.4-6.3-18.1-9.1z\" class=\"st0\"/\u003e\u003cpath d=\"M440.4 378.5c3.7-8.6 2.4-18.9-.7-26.9-5.7-14.8-17.9-25.3-29.6-25.6h-.4s-2.3-.3-5.3-.3c-6.4 0-14.2 1.4-15.3 7.8-.7 4.5 1.2 6.8 5.4 11.2 4.8 5 11.3 11.8 13.2 26.1.1 1 .3 2 .4 3 2.3 14.4 6.1 21.7 11.4 21.7 2.6 0 7.4-1.6 15.4-9.1 2.5-2.4 4.3-5 5.5-7.9zM102.9 137.8c-.4-10.9-.6-21.6-.1-24.8 1.4-6.5 41.8-52.7 68.4-58.1 2.2-.4 4.8-.7 7.8-.7 30 0 87.4 21.4 94.4 25.1.4.9.9 2.6 1.5 4.9-3.3 3.4-5.9 8.6-7.3 14.7-1.4 6.2-1.1 12 .4 16.4-30.3 13.2-105.7 41.7-162.3 26.4 1.2 1.8 2.4 3.7 3.5 5.8 4.3 7.5 7.4 14.8 9.1 19.2 23.4 3.7 75.1 4.5 156.2-32 1.5-4.8 3.9-11.7 7.1-19.1-1.5 1.4-3 2-4.2 1.8-3.3-.7-5.5-8.2-3.5-17.1 1.9-8.4 6.6-14.1 9.8-14.1.2 0 .4 0 .5.1 3.2.7 5.3 7.7 3.7 16.1 10.6-19.6 22.6-29.5 35.6-29.5 4.4 0 8.2 1 11.5 3 5.5-6.7 9-11.3 9-11.3-4.1.7-12.8 1.9-12.8 1.9 32.6-12 30-44.6 30-44.6 0 5.6-16.9 19.1-16.9 19.1.8-4.9-1.9-11.3-1.9-11.3.7 6.4-19.5 22.9-19.5 22.9 1.5-3 .4-8.3.4-8.3-1.1 6-10.1 8.3-10.1 8.3 5.6-6.8 16.1-42.4 8.3-44.6-7.9-2.3-18.8 23.3-18.8 23.3-.4-6-3.8-6-3.8-6C300.4 44 285.4 59 285.4 59c-1.1-3.8-7.1-5.6-7.1-5.6 1.4 3 .6 13.8-.2 21.6l-.2-.2c-3.2-3.2-67.4-27-99-27-3.4 0-6.5.3-9 .8-16.7 3.4-36.6 20.6-46.9 30.6C110.6 91 97.3 106.5 96.4 112c-.4 2.9-.4 10.2-.2 18.3 2.3 2 4.5 4.6 6.7 7.5zm41.8 312.1c-7.2 1.6-28.2 13.1-46.4 16.6-18.2 3.5-34 5.3-39.5 7.4-5.5 2-9.8 6.1 1 10.2s63.4 5.5 68.1 0c4.7-5.5-3.2-7.9-14.7-7.8-8.2.1-7.2-2.7-7.2-3.1 0 0 .5-3.6 13.1-5.3 12.6-1.7 68.1-7 67.1-12.9s-34.3-6.7-41.5-5.1z\" class=\"st0\"/\u003e\u003cellipse cx=\"108.7\" cy=\"493.7\" class=\"st0\" rx=\"10.9\" ry=\"3.2\" transform=\"rotate(-12.285 108.609 493.667)\"/\u003e\u003cellipse cx=\"83.5\" cy=\"492.3\" class=\"st0\" rx=\"11.5\" ry=\"3.1\" transform=\"rotate(-4.542 83.463 492.308) scale(1.00004)\"/\u003e\u003cellipse cx=\"63.3\" cy=\"489.8\" class=\"st0\" rx=\"7.7\" ry=\"2.4\" transform=\"rotate(-7.765 63.331 489.89)\"/\u003e\u003cellipse cx=\"48.4\" cy=\"487.5\" class=\"st0\" rx=\"7.4\" ry=\"1.9\" transform=\"rotate(-8.27 48.382 487.623)\"/\u003e\u003cellipse cx=\"45.1\" cy=\"483.3\" class=\"st0\" rx=\"7.4\" ry=\"1.9\" transform=\"rotate(-8.27 45.007 483.428)\"/\u003e\u003cellipse cx=\"44.2\" cy=\"478.5\" class=\"st0\" rx=\"6.4\" ry=\"1.7\" transform=\"rotate(-8.27 44.156 478.58)\"/\u003e\u003cpath d=\"M253.9 455.7c-12.5.6-40.7-.8-44.6 5.7-3.9 6.5 11.5 9 35.6 7s58.3-4.7 59.7-12.1c1.4-7.4-6.3-5.9-7.2-10.6-.8-4.7 8.6-4.7 10.4-11.7 1.8-7-12.7-6.1-25.6-6.1s-34.4 1.2-36.4 8 9.8 6.8 18.2 8.4c8.4 1.6 5.9 4.7 5.9 4.7-.2 4.2-3.5 6.1-16 6.7z\" class=\"st0\"/\u003e\u003cellipse cx=\"220.6\" cy=\"473.6\" class=\"st0\" rx=\"10.8\" ry=\"3.5\"/\u003e\u003cellipse cx=\"248.4\" cy=\"472.9\" class=\"st0\" rx=\"7.2\" ry=\"3.2\"/\u003e\u003cellipse cx=\"270.9\" cy=\"470.6\" class=\"st0\" rx=\"7.9\" ry=\"2.6\"/\u003e\u003cellipse cx=\"288.2\" cy=\"467.6\" class=\"st0\" rx=\"5.8\" ry=\"2.8\"/\u003e\u003cellipse cx=\"303.2\" cy=\"464.5\" class=\"st0\" rx=\"5.8\" ry=\"2.7\"/\u003e\u003cpath d=\"M146.7 225.9c-10.8 0-20.6 4.1-28 10.8-.5.4-1 .9-1.4 1.4-7.5 7.5-12.2 17.9-12.2 29.4 0 4.3.7 8.5 1.9 12.4.4 1.3.9 2.6 1.4 3.8.5 1.2 1.1 2.5 1.8 3.6 1 1.8 2 3.5 3.2 5.1 7.6 10.2 19.7 16.7 33.4 16.7 23 0 41.6-18.6 41.6-41.6s-18.8-41.6-41.7-41.6zm-3.8 69.4c-3.6 0-6.9-1.5-9.3-3.8-.5-.5-.9-1-1.3-1.5-.3-.4-.5-.7-.7-1.1-.5-.8-.8-1.6-1.1-2.5-.1-.2-.1-.4-.2-.6-.3-1.1-.5-2.3-.5-3.6 0-7.2 5.9-13.1 13.1-13.1 5.9 0 10.9 3.9 12.5 9.2.4 1.2.6 2.5.6 3.9 0 7.2-5.8 13.1-13.1 13.1zM290 198.4c-2.5-.9-5.2-1.6-8-2-2.1-.3-4.2-.5-6.3-.5-9.3 0-18 3.1-24.9 8.3-3.2 2.4-6.1 5.2-8.5 8.5-1.2 1.6-2.3 3.3-3.2 5.1l-1.8 3.6c-.5 1.2-1 2.5-1.4 3.8-1.2 3.9-1.9 8.1-1.9 12.4 0 5 .9 9.9 2.5 14.3.2.6.5 1.3.7 1.9 1.1 2.5 2.3 4.9 3.8 7.1.4.6.8 1.1 1.2 1.6.8 1.1 1.7 2.1 2.5 3.1 1.3 1.5 2.8 2.9 4.3 4.1 7.2 5.9 16.4 9.5 26.5 9.5 23 0 41.6-18.6 41.6-41.6.2-18-11.2-33.3-27.1-39.2zm-14.8 65.1c-1.6.7-3.3 1-5.1 1-1.4 0-2.7-.2-3.9-.6-1.5-.5-3-1.2-4.2-2.2-.4-.3-.8-.7-1.2-1-.3-.3-.6-.6-.8-.9-.4-.5-.8-1.1-1.2-1.7-.3-.5-.6-1-.8-1.6-.3-.7-.5-1.4-.7-2.1-.2-1-.4-1.9-.4-3 0-.5 0-.9.1-1.3 0-.4.1-.9.2-1.3 1-4.7 4.4-8.5 9-9.9 1.2-.4 2.5-.6 3.9-.6 1.8 0 3.5.4 5.1 1 .8.3 1.5.7 2.2 1.2.4.2.7.5 1 .8 2.9 2.4 4.8 6.1 4.8 10.1 0 5.4-3.3 10.1-8 12.1zm-51 80.8c-.4-1-.7-2-.9-2.8-.9-3.1-1.6-6.3-2-8.7-1.1.4-2.2.8-3.3 1.3-3.7 1.8-7 3.8-10 5.7-.1 0-.1.1-.2.1.8 3.7 3.3 11.8 9.8 11.8.8 0 1.7-.1 2.6-.4 3-1 4-3.8 4-7zm8.9-13.6c-1.9 0-3.3.1-4.2.2-.6.1-1.1.2-1.7.3.4 2.3 1 5.5 1.9 8.5 1.1 3.8 2.7 7.3 4.8 8.1.6.2 1.7.4 2.9.4 3.3 0 7.7-1.5 7.6-8.5v-1.1c-.3-3.4-.5-5.8-.7-7.6-1.1 0-2.3-.1-3.3-.1-2.6-.1-5.2-.2-7.3-.2z\" class=\"st0\"/\u003e\u003cpath d=\"M245.5 299.4s-1.2 14-20.9 16.9c-3.7.6-6.9.8-9.7.8-10.5 0-14.6-3.5-17.1-6.5 0 0-18.9 6.4-20.4 17.2-1.1 8.1 6.7 12.3 13.6 12.3 2.3 0 4.5-.5 6.3-1.4 6.9-3.8 17.2-12.1 30.9-13.9 1.2-.2 3-.2 5-.2 4.7 0 11.1.3 17.3.3 7.1 0 13.9-.4 17.6-2.1 8.5-3.8 8.5-10.3 7.9-13.5-.6-3.6-9.2-9.7-30.5-9.9z\" class=\"st0\"/\u003e\u003c/svg\u003e"
+ },
+ "version": "v1.0.0"
+ }
\ No newline at end of file
diff --git a/server/meshmodel/jaeger-operator/jaeger-3.1.2/v1.0.0/model.json b/server/meshmodel/jaeger-operator/jaeger-3.1.2/v1.0.0/model.json
new file mode 100644
index 00000000000..55184ca9390
--- /dev/null
+++ b/server/meshmodel/jaeger-operator/jaeger-3.1.2/v1.0.0/model.json
@@ -0,0 +1,42 @@
+{
+ "category": {
+ "name": "Observability and Analysis"
+ },
+ "displayName": "Jaeger Operator",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "capabilities": null,
+ "isAnnotation": false,
+ "primaryColor": "#67cfe3",
+ "secondaryColor": "#ACFFFF",
+ "shape": "circle",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" id=\"Layer_1\" data-name=\"Layer 1\" viewBox=\"0 0 449.70001 512.20001\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.cls-1{fill:#221f1f;}.cls-2,.cls-7{fill:none;}.cls-3{fill:#fff;}.cls-4{fill:#67cfe3;}.cls-5{fill:#dfcaa3;}.cls-6{fill:#648c1a;}.cls-7{stroke:#dfcaa3;stroke-linecap:round;stroke-linejoin:round;stroke-width:0;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M80.86432,496.156c-5.906,1.28554-10.39046,3.72107-10.01635,5.44s5.46523,2.07033,11.371.78479c5.906-1.28532,10.39047-3.72085,10.01613-5.43981C91.861,495.222,86.7701,494.87065,80.86432,496.156Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M55.96457,494.75672c-6.337.50454-11.36432,2.2895-11.22921,3.98684s5.38162,2.66428,11.71859,2.15973c6.33675-.50454,11.3641-2.28949,11.229-3.98683S62.30132,494.25218,55.96457,494.75672Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M35.63913,492.92093c-4.21781.57455-7.491,2.11159-7.31105,3.4328.18014,1.32144,3.74515,1.92653,7.963,1.352,4.21781-.57477,7.491-2.11158,7.311-3.433C43.42194,492.95148,39.85694,492.34616,35.63913,492.92093Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M20.72942,491.06686c-4.07267.5915-7.24863,1.93679-7.09345,3.005.15495,1.06795,3.5824,1.45454,7.65529.863,4.07267-.59127,7.24862-1.93656,7.09345-3.00473C28.22975,490.862,24.80231,490.47559,20.72942,491.06686Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M17.90127,490.7195c4.07289-.59127,7.24884-1.93656,7.09367-3.00472s-3.5824-1.45454-7.65529-.86327c-4.07289.59149-7.24862,1.93678-7.09367,3.005C10.40115,490.92462,13.8286,491.311,17.90127,490.7195Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M16.97691,485.70375c3.53981-.51413,6.3-1.68329,6.1653-2.61167-.13489-.92837-3.11375-1.26413-6.65334-.75023-3.53982.51391-6.3,1.68329-6.1653,2.61166C10.45845,485.88189,13.43732,486.21765,16.97691,485.70375Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M193.99476,475.52932c-6.00188,0-10.86737,1.58809-10.86737,3.547s4.86549,3.54695,10.86737,3.54695c6.00165,0,10.86713-1.58809,10.86713-3.54695S199.99641,475.52932,193.99476,475.52932Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M221.97549,475.06915c-4.00044,0-7.2435,1.449-7.2435,3.23637s3.24306,3.23638,7.2435,3.23638c4.00065,0,7.24372-1.449,7.24372-3.23638S225.97614,475.06915,221.97549,475.06915Z\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" cx=\"244.55743\" cy=\"475.99328\" rx=\"7.93755\" ry=\"2.61902\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M261.9778,470.28749c-3.19156,0-5.7787,1.243-5.7787,2.7762s2.58714,2.7762,5.7787,2.7762,5.77893-1.243,5.77893-2.7762S265.16936,470.28749,261.9778,470.28749Z\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" cx=\"277.00568\" cy=\"469.90401\" rx=\"5.85919\" ry=\"2.69951\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.34355,103.67729a.04473.04473,0,0,1-.02052-.00112l.02988.01494Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M45.75113,154.80916a14.95375,14.95375,0,0,0,.66484,5.61438A15.02674,15.02674,0,0,1,45.75113,154.80916Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.28,103.64005l.00647.00647a.04653.04653,0,0,1,.03523.00178l.00579.00491-.00379-.0058A.13218.13218,0,0,1,298.28,103.64005Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M65.24273,158.77615a37.39156,37.39156,0,0,0-2.88211-4.58435,25.884,25.884,0,0,0-1.90668-2.3022,21.40346,21.40346,0,0,1,1.90312,2.3022A37.74322,37.74322,0,0,1,65.24273,158.77615Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M53.40374,147.83945l.28493.03656c.18149.0272.36007.06867.54022.10278-.18126-.03522-.35963-.078-.54022-.10635l-.28493-.03656-.37991-.00736a9.79746,9.79746,0,0,0-1.44652.12419,9.79427,9.79427,0,0,1,1.44652-.1204Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"51.577 147.953 51.263 148.04 50.945 148.124 51.263 148.041 51.577 147.953\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.48445,103.88486a4.62684,4.62684,0,0,1,.36163,1.60347,18.89375,18.89375,0,0,1-.21872,3.54539,19.09019,19.09019,0,0,0,.22251-3.54539A4.69719,4.69719,0,0,0,298.48445,103.88486Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M299.80678,97.5325l.4274.14982-.4274-.15339-.85836-.29229a12.25519,12.25519,0,0,0-1.82286-.40911,11.82825,11.82825,0,0,1,1.82286.41268Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M70.71821,174.77141c-.0457-.31592-.10256-.67554-.18616-1.08065-.02743-.14068-.06912-.278-.09766-.41848.02787.14135.06733.28025.09409.42205C70.61387,174.097,70.67184,174.45549,70.71821,174.77141Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M277.15907,121.74355a39.98011,39.98011,0,0,1,1.24207-7.15966,35.36415,35.36415,0,0,1,4.11681-9.68371,20.91539,20.91539,0,0,1,1.89108-2.59449,20.91706,20.91706,0,0,0-1.8913,2.59449,35.3971,35.3971,0,0,0-4.12038,9.68371,40.78716,40.78716,0,0,0-1.24185,7.1561c-.08762.86929-.08048,1.56691-.09877,2.03087-.00356.231-.00156.40823.00112.53063-.00268-.12174-.00446-.29831-.00089-.53063C277.075,123.3069,277.06788,122.60928,277.15907,121.74355Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M289.75921,97.99624a14.0104,14.0104,0,0,0-3.08454,2.03489,20.94357,20.94357,0,0,0-2.26564,2.27456,20.92581,20.92581,0,0,1,2.26586-2.27456A14.009,14.009,0,0,1,289.75921,97.99624Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M294.32015,103.19081a8.94028,8.94028,0,0,0-3.7514,1.70959,20.81423,20.81423,0,0,0-3.43368,3.33492,20.82677,20.82677,0,0,1,3.43725-3.33492,8.90084,8.90084,0,0,1,3.75162-1.70959q.47322-.05787.94844-.09855l-.00245-.00022C294.95222,103.11768,294.63808,103.15067,294.32015,103.19081Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M304.55544,105.57974a20.151,20.151,0,0,1-1.311,5.52186,20.254,20.254,0,0,0,1.31475-5.52565,10.76661,10.76661,0,0,0-.229-2.79984A10.68341,10.68341,0,0,1,304.55544,105.57974Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M52.87936,154.17307l-.05262-.01047a.12584.12584,0,0,0,.051.01092Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"298.459 103.742 298.45 103.738 298.422 103.735 298.459 103.742\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M289.75921,97.99624a14.01687,14.01687,0,0,1,3.50905-1.15779A14.01393,14.01393,0,0,0,289.75921,97.99624Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.37119,103.71675l.00379.00357a.24963.24963,0,0,0,.04749.01471A.11108.11108,0,0,1,298.37119,103.71675Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"70.901 176.175 70.893 176.102 70.901 176.174 70.901 176.175\"\u003e\u003c/polygon\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"298.36 103.694 298.353 103.691 298.354 103.692 298.36 103.694\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M51.59627,170.21159c.02051.02653.03723.05574.05774.08205.23455.31391.4595.58458.66083.81912-.20066-.23432-.4245-.50543-.657-.81912C51.63885,170.26911,51.61566,170.23656,51.59627,170.21159Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M54.32431,154.96634a5.38665,5.38665,0,0,0-1.2608-.73507A5.45964,5.45964,0,0,1,54.32431,154.96634Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M52.34026,171.14286c.19463.22608.36854.42.501.579.2885.31771.453.48225.453.48225l-.00089-.00469c-.00134-.00133-.16454-.161-.45215-.48113C52.70857,171.56268,52.53489,171.36938,52.34026,171.14286Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M48.08432,164.60546c.0107.0214.01583.045.02653.06644.02341.04682.05329.08985.07692.13667-.0243-.04816-.04905-.08807-.07335-.13667C48.10416,164.65116,48.09458,164.62641,48.08432,164.60546Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M51.64309,163.51767c.4129,2.52761.86951,4.70474,1.16893,6.23888C52.5126,168.21884,52.056,166.04528,51.64309,163.51767Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"303.325 100.116 303.314 100.097 303.294 100.072 303.314 100.097 303.325 100.116\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M189.10363,288.719c-.548.06934-1.096.14247-1.65119.23388a38.3278,38.3278,0,0,0-7.878,2.18382,38.36808,38.36808,0,0,1,7.88158-2.18382C188.0076,288.865,188.55561,288.7883,189.10363,288.719Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M196.942,288.57159c-.17189-.01538-.33353-.04459-.50721-.0573q-1.83335-.12875-3.67047-.07736,1.835-.05117,3.67047.07759C196.60843,288.52723,196.77007,288.55643,196.942,288.57159Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" points=\"298.302 103.668 298.302 103.668 298.057 103.556 298.302 103.668\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M214.36657,339.52287l-2.47655-.0622-.012-.00023c-2.778-.06933-5.40592-.13823-7.57458-.13823l-.00981-.00022H204.292a33.76128,33.76128,0,0,0-4.04369.15339q-1.60124.214-3.178.57344.35817,2.32494.86149,4.62269c.02007.0923.04258.18416.0631.27646.31792,1.46123.68713,2.99291,1.13192,4.4887,1.19079,3.99619,2.8529,7.6564,5.05188,8.4782h-.00357a8.09249,8.09249,0,0,0,1.88818.40756c3.42678.36809,9.24739-.66485,9.1435-8.88576q-.00737-.58893-.05128-1.1763C214.85239,344.20576,214.58573,341.43335,214.36657,339.52287Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M193.46859,349.43667c-.01137-.05953-.0272-.11527-.039-.17458-.237-1.20015-.5333-2.35058-.84231-3.42945-.03723-.13132-.07157-.2633-.10969-.3944-.42339-1.43314-.85926-2.69794-1.2006-3.61406a83.47177,83.47177,0,0,0-14.29726,7.61249l-.18617.11682c.65548,3.03371,2.36753,8.79525,6.25092,11.243a7.878,7.878,0,0,0,6.74586.71635,5.23573,5.23573,0,0,0,3.43793-3.07139C194.28526,356.01889,194.0875,352.63291,193.46859,349.43667Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M295.23715,123.92425l.00112-.00111c.00312-.01383.2283-.993.65637-2.64712C295.46345,122.9417,295.23715,123.92425,295.23715,123.92425Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M298.31568,103.67573c.01583.014.02408.03076.04459.041-.02029-.01026-.02787-.02675-.0408-.0408Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-2\" d=\"M254.05118,311.24963a9.59552,9.59552,0,0,0-.44479-1.68775,11.49739,11.49739,0,0,0-1.81305-3.19513c-2.00946-2.5479-5.2396-4.78433-9.50423-6.52849-6.78354-2.77263-15.70364-4.22271-26.51259-4.31769l-4.74866-.03657a7.32238,7.32238,0,0,1,.89493,3.61629c-.08762,6.22081-8.00331,12.43806-18.76834,14.648q-.76417.16053-1.53414.29229c-7.973,1.32256-15.28538.08562-19.81176-2.80184a9.80461,9.80461,0,0,1-4.26374-4.87908l-.00044-.00112-3.89029,1.3152c-1.55577.52639-10.889,3.87-17.88813,10.1383a25.5708,25.5708,0,0,0-6.18849,7.90522,17.59325,17.59325,0,0,0-1.5736,5.2396,16.94661,16.94661,0,0,0,.48961,7.05421,16.05017,16.05017,0,0,0,3.37148,6.07055c3.83188,4.37967,10.09639,6.99512,16.752,6.99512a20.01475,20.01475,0,0,0,9.669-2.30131c1.69867-.93863,3.51417-2.07479,5.43557-3.27651,4.93126-3.09324,10.76659-6.751,17.55861-8.937a40.36893,40.36893,0,0,1,7.11262-1.61975q.33276-.0438.77588-.07669c.51635-.03835,1.17651-.062,1.91114-.078.52461-.01137,1.07129-.02052,1.7038-.02052h.00112q3.83556.02475,7.66978.14247c1.62019.04013,3.34874.08405,5.11809.11772,1.76868.03389,3.57838.05752,5.36022.05752h.00178c3.93556,0,7.28118-.1146,10.15191-.35851a33.928,33.928,0,0,0,10.92488-2.36641c7.93331-3.54472,12.37051-10.02906,12.33283-17.73719a21.20459,21.20459,0,0,0-.23432-2.69817C254.07905,311.69665,254.08931,311.47882,254.05118,311.24963Zm-6.6034,6.96257a11.16842,11.16842,0,0,1-1.356,2.95145,12.03651,12.03651,0,0,1-1.56045,1.92452,14.54158,14.54158,0,0,1-2.19942,1.80457,19.35589,19.35589,0,0,1-2.93606,1.61128c-3.93778,1.75709-11.068,2.16977-18.46513,2.16977-6.50574,0-13.21951-.31771-18.14363-.31771a43.34184,43.34184,0,0,0-5.2309.23009,50.89,50.89,0,0,0-14.6667,4.39528c-7.3057,3.36279-13.20724,7.697-17.70486,10.18335a13.77564,13.77564,0,0,1-6.56773,1.49757c-5.85584,0-12.35534-2.88166-13.97955-8.51767a10.01213,10.01213,0,0,1-.38325-2.79627,11.775,11.775,0,0,1,.10568-1.54417c1.32924-9.98447,16.81171-16.36581,20.54237-17.765.24859-.0932.44524-.16432.58168-.21292.14559-.05173.22318-.078.22318-.078,2.54611,3.14519,6.8783,6.76883,17.8879,6.76883q2.27981,0,4.96092-.223c.17167-.0136.34245-.03567.51412-.05039,1.47751-.13354,3.029-.30923,4.70184-.55582,6.46562-.95312,11.03346-3.04419,14.258-5.469a20.03462,20.03462,0,0,0,6.76549-8.78076c.2-.5168.35784-.99414.4818-1.41953a13.06625,13.06625,0,0,0,.4245-1.93746c.01226-.09564.0165-.14626.0165-.14626,22.34093.19,31.37808,6.59337,32.00636,10.37041.03567.21292.06889.43944.09809.67755a14.52864,14.52864,0,0,1,.10747,1.558A12.40964,12.40964,0,0,1,247.44778,318.2122Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" d=\"M266.16128,203.5211a41.775,41.775,0,0,0-12.06149-3.08632,42.54948,42.54948,0,0,0-4.29674-.21694h-.00022a42.02785,42.02785,0,1,0,0,84.05568h.00022a42.48524,42.48524,0,0,0,4.29674-.21693,42.03759,42.03759,0,0,0,12.06149-80.53549Zm-22.03861,65.98763A13.25262,13.25262,0,1,1,257.37518,256.256,13.25266,13.25266,0,0,1,244.12267,269.50873Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-3\" d=\"M126.38181,313.94467a41.89093,41.89093,0,0,0,4.31569-.8869c.68914-.18951,1.34819-.474,2.02708-.69873,1.07574-.35673,2.16754-.67934,3.20271-1.11833.81132-.344,1.57738-.79327,2.36753-1.18878.845-.42317,1.715-.78992,2.53273-1.2715a42.08161,42.08161,0,0,0,19.67911-45.73464q-.35215-1.525-.81311-3.00651a42.03321,42.03321,0,0,0-82.16638,12.494v.00357a42.01309,42.01309,0,0,0,47.7158,41.63722C125.62734,314.12192,125.99922,314.00755,126.38181,313.94467Zm-10.613-39.89552a13.25251,13.25251,0,0,1,0,26.505l-.00179-.00022a13.25229,13.25229,0,0,1,0-26.50457Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M117.76693,455.28526c-7.196,1.64382-28.36421,13.15039-46.65766,16.64606-18.28989,3.49589-34.11772,5.34416-39.67012,7.40067-5.545,2.05652-9.86251,6.166,1.03026,10.27543,10.89278,4.11324,63.71664,5.5524,68.44345,0,4.72681-5.54861-3.25845-7.95226-14.79779-7.8098-8.21891.10234-7.21429-2.76148-7.196-3.083,0,0,.515-3.59421,13.15753-5.34394,12.61687-1.7426,68.44345-6.988,67.41318-12.94952C158.46352,454.46345,124.95937,453.64165,117.76693,455.28526Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M227.52432,461.03854h-.00022c-12.54017.61735-40.90081-.8218-44.80939,5.75685-3.905,6.57508,11.51013,9.04094,35.76511,6.988,24.25475-2.05673,58.57691-4.72681,60.01629-12.12749,1.43916-7.40067-6.37063-5.96152-7.19623-10.68833-.81823-4.72681,8.63539-4.72681,10.48366-11.71458,1.8485-6.988-12.74105-6.16619-25.69034-6.16619s-34.5304,1.23114-36.58691,8.01447c-2.05673,6.78332,9.86631,6.78332,18.29346,8.42715,8.42715,1.6436,5.96129,4.72681,5.96129,4.72681C243.34836,458.57269,240.0607,460.42118,227.52432,461.03854Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M422.05663,385.0301v.00357a30.592,30.592,0,0,1-7.78036,11.93374c-6.137,5.80813-11.51014,9.28574-16.31364,10.55679,26.53421-3.72954,42.28534-8.37587,42.28534-13.41325C440.248,390.87814,433.7313,387.80608,422.05663,385.0301Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M21.41945,394.111c0,3.50681,7.64169,6.81988,21.223,9.76776a67.46813,67.46813,0,0,1,.5333-19.65235C29.26581,387.20723,21.41945,390.56043,21.41945,394.111Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M376.67,377.6622c-1.68753-12.3685-6.96592-17.91711-11.616-22.8156-4.336-4.55892-8.43071-8.86547-7.11218-16.76668,1.21643-7.31305,7.03192-11.80955,16.53281-12.97849-5.77135-39.00149-14.22413-88.20549-25.09506-130.184-5.428-20.96354-14.01233-35.52388-25.526-45.204C310.67771,156.453,294.828,163.861,277.13365,171.53548q-19.1283,8.27977-38.53038,15.90452c-10.10375,10.84173-21.14257,21.52627-27.90783,24.56912a31.21262,31.21262,0,0,1-12.82132,3.03193,19.75473,19.75473,0,0,1-16.12368-7.63456,52.42567,52.42567,0,0,1-7.14874,1.50493c-1.98338.20824-4.90584.45661-8.55869.71969a11.25822,11.25822,0,0,1-1.84828,11.2252c-2.9588,3.5688-7.73309,5.36245-14.5017,5.36245-9.7312,0-23.59013-3.71126-42.11747-11.196q-3.74894-1.519-7.53222-2.95145-2.12595.01071-4.25549.01093h-.01092c-17.70531,0-31.53883-.55538-42.38412-1.44295-11.87911,24.5874-6.71755,51.86315-2.37065,74.39025,4.16787,21.592,18.62588,60.00916,32.03557,93.01613,4.97139,12.2481,9.80053,23.74352,13.90642,33.36525,36.302,3.21452,82.83925,5.13949,133.58452,5.13949,60.39264,0,114.78719-2.73607,153.09106-7.10838-2.7907-11.4845-6.32672-27.46951-6.93315-31.53147ZM266.16128,280.97093a41.79662,41.79662,0,0,1-12.06149,3.08566,42.48524,42.48524,0,0,1-4.29674.21693h-.00022a42.02785,42.02785,0,1,1,0-84.05568h.00022a42.54948,42.54948,0,0,1,4.29674.21694,42.038,42.038,0,0,1,12.06149,80.53615ZM77.52717,272.53687v-.00357a42.03492,42.03492,0,0,1,82.16638-12.494q.46052,1.48052.81311,3.00651a42.04,42.04,0,0,1-19.67911,45.73464c-.81778.48158-1.68774.84833-2.53273,1.2715-.79015.39551-1.55621.84476-2.36753,1.18878-1.03517.439-2.127.7616-3.20271,1.11833-.67889.22473-1.33794.50922-2.02708.69873a41.89093,41.89093,0,0,1-4.31569.8869c-.38259.06288-.75447.17725-1.13884.22942a42.01309,42.01309,0,0,1-47.7158-41.63722Zm112.26315,88.976a7.878,7.878,0,0,1-6.74586-.71635c-3.88339-2.44779-5.59544-8.20933-6.25092-11.243l.18617-.11682a83.47177,83.47177,0,0,1,14.29726-7.61249c.34134.91612.77721,2.18092,1.2006,3.61406.03812.1311.07246.26308.10969.3944.309,1.07887.60531,2.2293.84231,3.42945.01182.05931.02765.115.039.17458.61891,3.19624.81667,6.58222-.24034,9.00482A5.23573,5.23573,0,0,1,189.79032,361.51288Zm16.27306-3.19045a8.09249,8.09249,0,0,1-1.88818-.40756h.00357c-2.199-.8218-3.86109-4.482-5.05188-8.4782-.44479-1.49579-.814-3.02747-1.13192-4.4887-.02052-.0923-.043-.18416-.0631-.27646q-.5-2.29752-.86149-4.62269,1.57516-.35884,3.178-.57344a33.76128,33.76128,0,0,1,4.04369-.15339h.00156l.00981.00022c2.16866,0,4.79659.0689,7.57458.13823l.012.00023,2.47655.0622c.21916,1.91048.48582,4.68289.789,8.7375q.04415.58725.05128,1.1763C215.31077,357.65758,209.49016,358.69052,206.06338,358.32243Zm35.94793-25.96279a33.928,33.928,0,0,1-10.92488,2.36641c-2.87073.24391-6.21635.35851-10.15191.35851h-.00178c-1.78184,0-3.59154-.02363-5.36022-.05752-1.76935-.03367-3.4979-.07759-5.11809-.11772q-3.83389-.11772-7.66978-.14247h-.00112c-.63251,0-1.17919.00915-1.7038.02052-.73463.01605-1.39479.03968-1.91114.078q-.44278.03277-.77588.07669a40.36893,40.36893,0,0,0-7.11262,1.61975c-6.792,2.186-12.62735,5.8438-17.55861,8.937-1.9214,1.20172-3.7369,2.33788-5.43557,3.27651a20.01475,20.01475,0,0,1-9.669,2.30131c-6.65557,0-12.92008-2.61545-16.752-6.99512a16.05017,16.05017,0,0,1-3.37148-6.07055,16.94661,16.94661,0,0,1-.48961-7.05421,17.59325,17.59325,0,0,1,1.5736-5.2396A25.5708,25.5708,0,0,1,145.766,317.812c6.99914-6.2683,16.33236-9.61191,17.88813-10.1383l3.89029-1.3152a7.22014,7.22014,0,0,1-.29586-1.16158c-.88311-5.335,4.28715-10.86134,12.32592-14.06026a38.3278,38.3278,0,0,1,7.878-2.18382c.55516-.09141,1.10317-.16454,1.65119-.23388q1.8233-.23074,3.66065-.282,1.835-.05117,3.67047.07736c.17368.01271.33532.04192.50721.0573,5.867.52082,10.68878,2.52159,13.16979,5.552a8.53683,8.53683,0,0,1,.91611,1.36045l4.74866.03657c10.80895.095,19.72905,1.54506,26.51259,4.31769,4.26463,1.74416,7.49477,3.98059,9.50423,6.52849a11.49739,11.49739,0,0,1,1.81305,3.19513,9.59552,9.59552,0,0,1,.44479,1.68775c.03813.22919.02787.447.05864.67465a21.20459,21.20459,0,0,1,.23432,2.69817C254.38182,322.33058,249.94462,328.81492,242.01131,332.35964Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M304.33026,102.77611a7.92079,7.92079,0,0,0-.2205-1.03561,5.36251,5.36251,0,0,0-.482-1.09581l-.30322-.52884-.01092-.01895-.0194-.02475-.39708-.50142a6.91464,6.91464,0,0,0-2.04558-1.60347l-.16075-.08406-.0767-.04392-.30321-.12775-.02564-.01092-.05106-.01829-.4274-.14982-.85836-.29229a11.82825,11.82825,0,0,0-1.82286-.41268,16.60171,16.60171,0,0,0-1.91405-.14626,18.4614,18.4614,0,0,0-1.94325.15718,14.01078,14.01078,0,0,0-6.59337,3.19268,20.91808,20.91808,0,0,0-4.15694,4.86905,35.36415,35.36415,0,0,0-4.11681,9.68371,39.98011,39.98011,0,0,0-1.24207,7.15966c-.09119.86573-.084,1.56335-.10211,2.02731-.00357.23232-.00179.40889.00089.53063.00267.12507.00624.19263.00624.19263l1.315-2.38894c.83652-1.50492,2.00546-3.63813,3.452-6.09663a61.08309,61.08309,0,0,1,5.304-7.77323,20.81423,20.81423,0,0,1,3.43368-3.33492,8.94028,8.94028,0,0,1,3.7514-1.70959c.31793-.04014.63207-.07313.94978-.09877l.00245.00022.00134-.00022c.32506.03656.64656,0,.97519.05863.33242.08027.66128.0767,1.00462.18617l.80352.21916.24458.1117c-.01338-.0078-.02831-.01628-.02608-.02163l.01092.00045-.00647-.00647a.13218.13218,0,0,0,.0437.00736l.00379.0058c.01672.00847.03233.0185.02966.02475l-.0136-.00067.00936.01382.00713.00312.02587.00781.0729.03656-.00914-.00089.00936.00468-.03656-.00736a.24963.24963,0,0,1-.04749-.01471.42157.42157,0,0,1,.10947.16454,4.69719,4.69719,0,0,1,.36542,1.60347,19.09019,19.09019,0,0,1-.22251,3.54539c-.04659.33777-.07491.67688-.132,1.00975-.25573,1.53792-.58079,3.03192-.90586,4.42-.65749,2.77621-1.2822,5.13593-1.69488,6.81253-.42807,1.65409-.65325,2.63329-.65637,2.64712a24.59877,24.59877,0,0,0,1.80323-2.081,42.32149,42.32149,0,0,0,4.02563-6.02707,36.664,36.664,0,0,0,2.10021-4.47487c.02809-.07469.04927-.1632.07714-.23856a20.151,20.151,0,0,0,1.311-5.52186A10.68341,10.68341,0,0,0,304.33026,102.77611Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M298.36762,103.71318l-.01828-.02207.00446.00134-.00089-.00134-.02988-.01494-.00356-.00022c.01293.014.02051.03054.0408.0408l.01092.00268.00379.00089-.00379-.00357Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" points=\"42.964 180.96 43.541 180.96 42.964 179.919 42.964 180.96\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M46.416,160.42354a27.17617,27.17617,0,0,0,1.66835,4.18192c.01026.02095.01984.0457.0301.06644.0243.0486.049.08851.07335.13667.42517.84454.89292,1.66634,1.38832,2.47031.09186.14893.18483.30879.27557.45081.544.85234,1.12368,1.68217,1.74461,2.4819.01939.025.04258.05752.06153.08205.23254.31369.45638.5848.657.81912l.02542.0301c.19463.22652.36831.41982.501.57544.28761.32016.45081.4798.45215.48113-.00134-.0078-.06956-.37255-.18728-.97341-.07692-.39239-.17056-.86527-.29408-1.46947-.29942-1.53414-.756-3.71127-1.16893-6.23888-.20445-1.26391-.39084-2.61924-.48225-3.99263-.03523-.61869-.04593-1.255-.02765-1.86811.00179-.0544-.00468-.1117-.00245-.16588a8.18343,8.18343,0,0,1,.24948-1.81974,3.0401,3.0401,0,0,1,.52952-1.13973,1.33328,1.33328,0,0,1,.5955-.34334l.19731-.03657.31771-.06577c.04838-.00758.0408.00557.02118.02163l-.01471.01092-.03568.02586a.20709.20709,0,0,1-.10969.02921l-.002-.00045-.00157.00045a.12584.12584,0,0,1-.051-.01092l.0437.02185a.443.443,0,0,0,.17546.03656l.01761.01026a5.38665,5.38665,0,0,1,1.2608.73507,20.77418,20.77418,0,0,1,3.13426,3.09747c1.01533,1.21286,2.009,2.48392,2.95144,3.75519,1.87748,2.557,3.61629,5.05187,5.14307,7.196q1.8564,2.63328,3.80646,5.19813c.94844,1.25165,1.53971,1.95975,1.541,1.96109l-.008-.07269-.06822-.58435c-.03144-.19977-.064-.45483-.10613-.74578-.04637-.31592-.10434-.67443-.18973-1.07708-.02676-.1418-.06622-.2807-.09409-.42205-.22183-1.09269-.47087-2.17824-.75982-3.25287-.07781-.28873-.17078-.57344-.25394-.8606q-.34146-1.18989-.74-2.36129c-.31971-.94777-.67889-1.88082-1.05122-2.80853-.17279-.43029-.32885-.86661-.51279-1.29223-.57455-1.32968-1.1919-2.64109-1.87391-3.92061a37.74322,37.74322,0,0,0-2.88567-4.58435,21.40346,21.40346,0,0,0-1.90312-2.3022,19.07684,19.07684,0,0,0-2.29039-2.09219A11.25,11.25,0,0,0,56.608,148.834a10.05412,10.05412,0,0,0-1.80525-.74243c-.18638-.045-.38147-.07536-.57387-.11282-.18015-.03411-.35873-.07558-.54022-.10278l-.28493-.03656-.37991-.00714a9.79427,9.79427,0,0,0-1.44652.1204l-.31414.08784-.3177.08383-.41648.12418-.12061.05128-.24458.10947a7.05077,7.05077,0,0,0-3.2803,2.83462,7.75366,7.75366,0,0,0-.78412,1.7825,8.28838,8.28838,0,0,0-.34825,1.78273A15.02674,15.02674,0,0,0,46.416,160.42354Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M67.49276,422.84793c9.85538,0,16.79232-5.36245,21.6616-12.32458-5.57426-12.9203-14.74294-34.69114-23.43674-57.60551a43.14336,43.14336,0,0,0-8.01447,9.58494c-7.324,11.34961-13.35484,37.76321-5.75685,51.7062C55.11334,420.02424,60.20178,422.84793,67.49276,422.84793Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M415.33908,357.39985c-5.77157-14.94-18.056-25.55166-29.86936-25.79647l-.42-.03656a39.55353,39.55353,0,0,0-5.33681-.34335c-6.43262,0-14.33,1.37361-15.41871,7.91213-.75982,4.53686,1.22735,6.86,5.42443,11.27626,4.79637,5.041,11.36053,11.95225,13.333,26.38105,2.25026,16.52188,6.283,24.90131,11.985,24.90131,2.66651,0,7.5213-1.59611,15.54646-9.19767C420.47144,383.13055,419.52166,368.22686,415.33908,357.39985Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M102.51633,287.30166a13.25246,13.25246,0,0,0,13.25072,13.25228l.00179.00022a13.25251,13.25251,0,0,0,0-26.505l-.00179.00022A13.25262,13.25262,0,0,0,102.51633,287.30166Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M244.12267,243.0035a13.25262,13.25262,0,1,0,13.25251,13.2525A13.2526,13.2526,0,0,0,244.12267,243.0035Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M319.481,122.32078c-1.68753,10.04533-4.93126,21.08058-7.07918,24.09044l-2.01638,2.82012c9.13212-4.44567,17.27791-8.6646,24.19277-12.5404,24.04317-13.4788,27.03118-19.38191,27.37809-20.87234.223-.97519-.01449-1.27841-.11682-1.40259-.26286-.32886-1.95061-1.9689-9.54481-1.9689-8.2994,0-19.91544,1.89956-32.03913,4.5295Q319.92711,119.65705,319.481,122.32078Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M310.10428,149.37l-3.46669-.28493q-7.51862-.52874-15.06065-.51123c-8.9678,0-20.79208.53687-30.49407,2.83462a11.26166,11.26166,0,0,1-1.47929,12.09092c-2.37444,2.86382-6.39248,7.63433-11.20691,13.10625q13.15206-5.3358,26.17615-10.9804Q292.51156,157.88122,310.10428,149.37Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M79.82113,139.2627v-.00379a133.923,133.923,0,0,0,34.74956,4.20822c20.43781,0,63.82633-3.97078,124.81425-30.56341l1.37361-.59907a36.3938,36.3938,0,0,1,.84008-10.04534,31.4539,31.4539,0,0,1,7.32019-14.81607,49.58223,49.58223,0,0,0-1.51942-4.96046c-7.03905-3.75162-65.05724-25.36171-95.31387-25.36171a39.992,39.992,0,0,0-7.84636.672c-26.81558,5.47214-67.563,52.08968-69.02423,58.70133-.43833,2.85668-.30679,11.83519.01471,21.52626Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M173.9295,202.508a42.55732,42.55732,0,0,0,5.56333-1.15066,11.27266,11.27266,0,0,1,19.00957-8.931,11.80569,11.80569,0,0,0,2.94409-.97185c5.5524-2.64087,25.59559-24.03559,40.82434-42.35825a11.19373,11.19373,0,0,1,1.80814-1.73145c-34.79348,15.035-83.4129,31.46548-129.70537,31.46548a165.05073,165.05073,0,0,1-21.0623-1.27841l1.01533,2.988L88.537,182.75711c-.04013.01829-1.0374.40176-2.70307,1.09581q11.17759,2.60822,30.17971,10.27186c23.15916,9.35129,32.01371,9.70935,34.22718,9.57781a11.26885,11.26885,0,0,1,10.21344-.146C166.45948,203.17285,171.13145,202.8003,173.9295,202.508Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-6\" d=\"M79.29875,205.45967a22.87731,22.87731,0,0,0-2.62638-.4274,11.17895,11.17895,0,0,1-11.91189-10.95141c-3.04285,1.72431-6.0857,3.59087-8.93481,5.56333L50.75908,203.151l-3.72576-4.90584a130.9118,130.9118,0,0,1-11.09009-17.67967C26.96807,184.8027,19.95466,189.431,18.24149,193.818a1.65218,1.65218,0,0,0,.146,1.77158C19.84876,197.73371,28.54256,204.29074,79.29875,205.45967Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M241.95669,118.8066c-24.36467,10.62613-77.762,31.10051-127.386,31.10051a140.18855,140.18855,0,0,1-36.42973-4.431q1.80825,2.73965,3.57972,5.84447A151.26672,151.26672,0,0,1,90.86373,170.699a152.44449,152.44449,0,0,0,23.50987,1.69132c28.50311,0,73.05321-6.524,134.18-34.03723.9607-3.01364,2.23933-6.78689,3.821-10.98419-.12418.00736-.2448.02921-.369.02921a9.20479,9.20479,0,0,1-1.92876-.208C246.278,126.35354,243.47254,123.25941,241.95669,118.8066Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M43.54122,180.9599a128.80816,128.80816,0,0,0,8.62067,13.3914c14.7648-10.22437,34.0738-17.60676,34.0738-17.60676s-.497-1.45744-1.42467-3.83545q-1.26714-3.25164-2.68858-6.44-1.03172-2.31558-2.13321-4.59905-.45482-.93674-.92413-1.86656l-.24837-.49317q-.56987-1.11767-1.1763-2.25383l-.13154-.24836q-2.27546-4.2623-4.946-8.29561c-5.92853-8.88732-13.44246-16.44875-21.8549-16.44518a15.72243,15.72243,0,0,0-8.20442,2.44757c-15.455,9.35128-7.47737,30.74957.4604,45.204Zm2.20991-26.15074a8.28838,8.28838,0,0,1,.34825-1.78273,7.75366,7.75366,0,0,1,.78412-1.7825,7.05077,7.05077,0,0,1,3.2803-2.83462l.24458-.10947.12061-.05128.41648-.12418.3177-.084.31414-.08762a9.79746,9.79746,0,0,1,1.44652-.12419l.37991.00736.28493.03656c.18059.02832.359.07113.54022.10635.1924.03746.38749.06778.57387.11282a10.05412,10.05412,0,0,1,1.80525.74243,11.25,11.25,0,0,1,1.55554.96337,19.07684,19.07684,0,0,1,2.29039,2.09219,25.884,25.884,0,0,1,1.90668,2.3022,37.39156,37.39156,0,0,1,2.88211,4.58435c.682,1.27952,1.29936,2.59093,1.87391,3.92061.18394.42562.34.86194.51279,1.29223.37233.92771.73151,1.86076,1.05122,2.80853q.396,1.17218.74,2.36129c.08316.28716.17613.57187.25394.8606.28895,1.07463.538,2.16018.75982,3.25287.02854.14046.07023.2778.09766.41848.0836.40511.14046.76473.18616,1.08065.04214.291.07469.546.10613.74578l.06822.58435.00847.07313-.00044-.00044c-.00134-.00134-.59261-.70944-1.541-1.96109q-1.95-2.5644-3.80646-5.19813c-1.52678-2.14414-3.26559-4.639-5.14307-7.196-.94242-1.27127-1.93611-2.54233-2.95144-3.75519a20.77418,20.77418,0,0,0-3.13426-3.09747,5.45964,5.45964,0,0,0-1.2608-.73507l-.01761-.01026a.443.443,0,0,1-.17546-.03656l-.0437-.02185.05262.01047.002.00045a.20709.20709,0,0,0,.10969-.02921l.03568-.02586.01471-.01092c.01962-.01606.0272-.02921-.02118-.02163l-.31771.06577-.19731.03657a1.33328,1.33328,0,0,0-.5955.34334,3.0401,3.0401,0,0,0-.52952,1.13973,8.18343,8.18343,0,0,0-.24948,1.81974c-.00223.05418.00424.11148.00245.16588-.01828.61312-.00758,1.24942.02765,1.86811.09141,1.37339.2778,2.72872.48225,3.99263.4129,2.52761.86951,4.70117,1.16893,6.23888.12352.6042.21716,1.07708.29408,1.46947.11772.60086.18594.96561.18728.97341l.00089.00469s-.16454-.16454-.453-.48225c-.13243-.159-.30634-.35293-.501-.579l-.02542-.0301c-.20133-.23454-.42628-.50521-.66083-.81912-.02051-.02631-.03723-.05552-.05774-.08205-.62093-.79973-1.2006-1.62956-1.74461-2.4819-.09074-.142-.18371-.30188-.27557-.45081-.4954-.804-.96315-1.62577-1.38832-2.47031-.02363-.04682-.05351-.08985-.07692-.13667-.0107-.02141-.01583-.045-.02653-.06644a27.17617,27.17617,0,0,1-1.66835-4.18192A14.95375,14.95375,0,0,1,45.75113,154.80916Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M257.82086,82.97216v-.00357a8.97445,8.97445,0,0,1,1.92876.2118c4.72681,1.04119,7.91949,5.589,8.99322,11.89741,9.00794-12.65344,18.83412-19.04971,29.33249-19.04971a21.64209,21.64209,0,0,1,11.57212,3.05756c5.53791-6.73962,9.06278-11.38595,9.06278-11.38595-4.1643.75983-12.87259,1.89577-12.87259,1.89577,32.94142-12.11657,30.2894-45.058,30.2894-45.058,0,5.68037-17.0369,19.309-17.0369,19.309.75626-4.92033-1.89219-11.36031-1.89219-11.36031.75625,6.44-19.68891,23.097-19.68891,23.097,1.51228-3.02814.37634-8.32838.37634-8.32838-1.13238,6.06007-10.22058,8.32838-10.22058,8.32838,5.68016-6.81253,16.28064-42.78208,8.32838-45.05419S277.06409,34.002,277.06409,34.002c-.37991-6.05627-3.788-6.05627-3.788-6.05627,1.51585,18.92909-13.62885,34.07379-13.62885,34.07379-1.13594-3.78439-7.196-5.67659-7.196-5.67659,1.94325,4.21179-.27044,23.39282-.94978,28.83553A10.97588,10.97588,0,0,1,257.82086,82.97216Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M249.75177,119.82951a4.39961,4.39961,0,0,0,.5041.47489c.0622.04749.128.08026.19374.12418a2.70263,2.70263,0,0,0,1.00819.4711,2.99818,2.99818,0,0,0,1.05925.01828,6.34349,6.34349,0,0,0,3.17439-1.78607q1.53-3.58073,3.21809-7.09033,1.58887-3.28743,3.21453-6.27543c1.61462-8.56248-.55894-15.59418-3.75875-16.29536a2.47615,2.47615,0,0,0-.548-.05864c-3.28386,0-8.05816,5.71672-9.92851,14.22792-1.35889,6.1769-.73039,11.66732.86952,14.73559a6.8487,6.8487,0,0,0,.96783,1.42466v.00357Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M298.34934,103.69111l.01828.02207.00357.00357a.11108.11108,0,0,0,.05128.01828l.0272.00268.00914.00089-.0729-.03656-.02587-.00781-.00624-.00178Z\"\u003e\u003c/path\u003e\u003cpolygon xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" points=\"298.075 82.468 298.077 82.468 298.079 82.468 298.075 82.468\"\u003e\u003c/polygon\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-4\" d=\"M298.07734,82.46829c-18.75318.00133-32.549,28.22575-39.75952,47.40277q-2.85334,7.59385-5.12879,15.38593a11.13807,11.13807,0,0,1,2.64466.90229c10.92577-3.26937,25.06585-4.02919,35.74325-4.02919,9.03715,0,15.5866.53709,15.5866.53709C310.00194,138.69283,326.47165,82.47141,298.07734,82.46829Zm5.16714,28.63331c-.02787.07536-.04905.16387-.07714.23856a36.664,36.664,0,0,1-2.10021,4.47487,42.32149,42.32149,0,0,1-4.02563,6.02707,24.59877,24.59877,0,0,1-1.80323,2.081l-.00112.00111s.2263-.98255.65749-2.64823c.41268-1.6766,1.03739-4.03632,1.69488-6.81253.32507-1.3881.65013-2.8821.90586-4.42.05707-.33287.08539-.672.132-1.00975a18.89375,18.89375,0,0,0,.21872-3.54539,4.62684,4.62684,0,0,0-.36163-1.60347.42157.42157,0,0,0-.10947-.16454l-.00379-.00089-.01092-.00268c-.02051-.01026-.02876-.027-.04459-.041l.00379.00022.00356.00022a.04473.04473,0,0,0,.02052.00112l.0136.00067c.00267-.00625-.01294-.01628-.02966-.02475l-.00579-.00491a.04653.04653,0,0,0-.03523-.00178l-.01092-.00045c-.00223.00535.0127.01383.02608.02163l.00067.00045-.24525-.11215-.80352-.21916c-.34334-.10947-.6722-.1059-1.00462-.18617-.32863-.05863-.65013-.02207-.97519-.05863l-.00134.00022q-.47523.0408-.94844.09855a8.90084,8.90084,0,0,0-3.75162,1.70959,20.82677,20.82677,0,0,0-3.43725,3.33492,61.08309,61.08309,0,0,0-5.304,7.77323c-1.44651,2.4585-2.61545,4.59171-3.452,6.09663l-1.315,2.38894s-.00357-.06756-.00624-.19263c-.00268-.1224-.00468-.29965-.00112-.53063.01829-.464.01115-1.16158.09877-2.03087a40.78716,40.78716,0,0,1,1.24185-7.1561,35.3971,35.3971,0,0,1,4.12038-9.68371,20.93213,20.93213,0,0,1,4.15694-4.86905,14.01285,14.01285,0,0,1,6.59359-3.19268,18.4614,18.4614,0,0,1,1.94325-.15718,16.60171,16.60171,0,0,1,1.91405.14626,12.25519,12.25519,0,0,1,1.82286.40911l.85836.29229.4274.15339.05106.01829.02564.01092.30321.12775.0767.04392.16075.08406a6.91464,6.91464,0,0,1,2.04558,1.60347l.39708.50142.0194.02452.01092.01918.30322.52884a5.36251,5.36251,0,0,1,.482,1.09581,7.92079,7.92079,0,0,1,.2205,1.03561,10.76661,10.76661,0,0,1,.229,2.79984A20.254,20.254,0,0,1,303.24448,111.1016Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M197.87769,208.22473a24.72125,24.72125,0,0,0,10.0197-2.42907c7.47-3.36056,25.70885-21.67229,46.46436-46.65053a4.454,4.454,0,0,0-6.84352-5.70245l-.00936.01137c-9.03336,10.87071-34.39886,40.00589-43.14015,44.15927l-.12418.05841a18.75549,18.75549,0,0,1-4.68668,1.48664l-3.324.52238-2.43286-2.31959a4.5007,4.5007,0,0,0-3.07563-1.22,4.45515,4.45515,0,0,0-3.74782,6.84909C187.3209,203.52356,190.52071,208.22473,197.87769,208.22473Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M153.4335,209.72252l-1.30784.69405-1.47929.08762q-.53107.0301-1.063.02921c-4.16052,0-14.38132-1.31141-36.12674-10.08926-23.97-9.68371-33.46737-11.13022-36.996-11.13022a7.06957,7.06957,0,0,0-1.24563.08762,4.44992,4.44992,0,0,0-3.58352,5.17628,4.49338,4.49338,0,0,0,4.6247,3.65285l.48938-.02943.49317.04035c2.64466.21917,11.14115,1.68017,32.88658,10.46159,17.58112,7.10126,30.89226,10.703,39.57135,10.703,4.54421,0,7.6564-.979,9.2563-2.90039a4.45888,4.45888,0,0,0-3.42633-7.30213A4.51522,4.51522,0,0,0,153.4335,209.72252Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-5\" d=\"M247.72447,312.30531c-.62828-3.777-9.66543-10.18045-32.00636-10.37041,0,0-.00424.05062-.0165.14626a13.06625,13.06625,0,0,1-.4245,1.93746c-.124.42539-.28181.90273-.4818,1.41953a20.03462,20.03462,0,0,1-6.76549,8.78076c-3.22456,2.42482-7.7924,4.51589-14.258,5.469-1.67281.24659-3.22433.42228-4.70184.55582-.17167.01472-.34245.03679-.51412.05039q-2.67978.22339-4.96092.223c-11.0096,0-15.34179-3.62364-17.8879-6.76883,0,0-.07759.02631-.22318.078-.13644.0486-.33309.11972-.58168.21292-3.73066,1.39924-19.21313,7.78058-20.54237,17.765a11.775,11.775,0,0,0-.10568,1.54417,10.01213,10.01213,0,0,0,.38325,2.79627c1.62421,5.636,8.12371,8.51767,13.97955,8.51767a13.77564,13.77564,0,0,0,6.56773-1.49757c4.49762-2.48637,10.39916-6.82056,17.70486-10.18335a50.89,50.89,0,0,1,14.6667-4.39528,43.34184,43.34184,0,0,1,5.2309-.23009c4.92412,0,11.63789.31771,18.14363.31771,7.39711,0,14.52735-.41268,18.46513-2.16977a19.35589,19.35589,0,0,0,2.93606-1.61128,14.54158,14.54158,0,0,0,2.19942-1.80457,12.03651,12.03651,0,0,0,1.56045-1.92452,11.16842,11.16842,0,0,0,1.356-2.95145,12.40964,12.40964,0,0,0,.48225-3.67135,14.52864,14.52864,0,0,0-.10747-1.558C247.79336,312.74475,247.76014,312.51823,247.72447,312.30531Z\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-7\" d=\"M215.70161,302.08116a13.06625,13.06625,0,0,1-.4245,1.93746\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"cls-1\" d=\"M171.80855,311.2387c4.52638,2.88746,11.83877,4.1244,19.81176,2.80184q.76986-.13176,1.53414-.29229c10.765-2.2099,18.68072-8.42715,18.76834-14.648a7.32238,7.32238,0,0,0-.89493-3.61629,8.53683,8.53683,0,0,0-.91611-1.36045c-2.481-3.03037-7.3028-5.03114-13.16979-5.552-.17189-.01516-.33353-.04436-.50721-.05707q-1.83335-.12876-3.67047-.07759-1.835.05149-3.66065.282c-.548.06934-1.096.146-1.64762.23388a38.36808,38.36808,0,0,0-7.88158,2.18382c-8.03877,3.19892-13.209,8.72523-12.32592,14.06026a7.22014,7.22014,0,0,0,.29586,1.16158l.00044.00112A9.80461,9.80461,0,0,0,171.80855,311.2387Z\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" viewBox=\"27.70 -2.30 447.60 509.60\" height=\"20\" width=\"20\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003esvg {enable-background:new 0 0 504 504}\u003c/style\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.st0{fill:#fff}\u003c/style\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M401.3 371.7c-1.7-12.3-6.9-17.7-11.5-22.6-4.3-4.5-8.3-8.8-7-16.6 1.2-7.2 7-11.7 16.4-12.9-5.7-38.6-14.1-87.4-24.9-129-5.4-20.8-13.9-35.2-25.3-44.8 2.1-1.1 4.1-2.1 6.1-3.2 2.7-1.4 5.3-2.8 7.7-4.2 25.2-14.1 29.3-20.9 30.2-24.8.8-3.3-.3-5.5-1.3-6.8-2.4-3-7-4.4-14.4-4.4-8.3 0-19.5 1.7-31.2 4.2-.1 2.1-.3 4.3-.6 6.7 12-2.6 23.5-4.5 31.7-4.5 7.5 0 9.2 1.6 9.5 1.9.1.1.3.4.1 1.4-.3 1.5-3.3 7.3-27.1 20.7-6.8 3.8-14.9 8-24 12.4l-.1.1h-.2c-10.5 5.1-22.4 10.5-35.2 16.1-7.6 3.3-15.2 6.5-22.6 9.5 3.6-4.1 6.7-7.8 9-10.6 4.5-5.4 3.8-13.5-1.7-18-.4-.3-.7-.6-1.1-.8 10.5-2.7 23.4-3.4 33.2-3.4 9 0 15.4.5 15.4.5 2.8-3.9 19.1-59.6-9-59.6-24.2 0-40 47.3-44 60.7-4.5-1-9.4.5-12.5 4.3-14.8 17.8-34.4 38.7-39.9 41.5-.8.3-1.4.6-1.8.7-4.1-3.4-10.2-4-15-.9-4.2 2.6-6.3 7.3-5.9 11.9-1.6.4-3 .6-3.9.8-2.1.2-5.3.5-9.4.8l-.7-.7c-4-3.3-9.4-3.8-13.8-1.6-2.4 0-11.1-.6-32.9-9.4-21.4-8.6-32-11.1-37.4-11.6 4.4-1.9 7.3-3.1 7.3-3.1s-15-44.1-35.2-44.1c-2.6 0-5.3.7-8.1 2.4-24.2 14.6 9.6 59.1 9.6 59.1 3.9-2.7 8.1-5.2 12.3-7.4-1.2 2.4-1.7 5.2-1.2 8 1 5.4 5.2 9.3 10.2 10.3-45.4-1.5-53.4-7.6-54.8-9.6-.3-.5-.5-.9-.1-1.8 1.7-4.3 8.6-8.9 17.5-13.1-1-1.8-1.9-3.8-2.8-5.8-9.8 4.7-18.3 10.3-20.7 16.6-1.1 2.7-.8 5.3.8 7.7 1.5 2.2 5.3 7.7 33.2 10.7 2.1.2 4.3.4 6.7.6-11.8 24.4-6.7 51.4-2.3 73.7 4.7 24.2 19.6 63.7 31.8 93.4 5.7 13.9 10.7 25.7 13.8 32.8 36.1 3.2 82.4 5.1 132.9 5.1 59.7 0 113.6-2.7 151.6-7-2.4-9.2-6.2-25.2-7.2-31.2 0-.3-.1-.8-.2-1.1zm-98.6-251.5c0-.5 0-1.2.1-2 .1-1.7.5-4.2 1.2-7.1.8-2.9 2-6.2 4.1-9.6 1.1-1.7 2.4-3.4 4.1-4.8.6-.6 1.4-1.1 2.1-1.5.5-.3 1.1-.6 1.6-.8.9-.4 1.8-.6 2.7-.8.6-.1 1.3-.1 1.9-.2.6 0 1.3 0 1.9.1.6.1 1.2.2 1.8.4l.3.1.6.2.3.1.1.1h.1l.3.1h.2c.1 0 1.6 1 2 1.6l.4.5.3.5c.2.3.3.6.4.9 0 .1.1.1.1.2s0 .1.1.2c.4 1.3.4 2.5.4 3.6-.1 1.1-.3 2.1-.5 3.1-.2.9-.5 1.8-.9 2.6-.6 1.7-1.4 3.1-2.1 4.4-1.4 2.6-2.9 4.6-4 6-1.1 1.4-1.8 2.1-1.8 2.1s.2-1 .6-2.6c.4-1.7 1-4 1.7-6.7.3-1.4.6-2.9.9-4.4.3-1.5.4-3.1.4-4.5 0-.2 0-.4-.1-.6-.1-.4-.2-.8-.3-1 0-.1-.1-.1-.1-.2l-.3-.1h-.2l-.6-.2c-.3-.1-.6-.1-.9-.2h-.1c-.4-.1-.7 0-1-.1-.3 0-.6.1-.9.1-.9.2-1.9.5-2.8 1.1l-.9.6c-.3.2-.6.5-.9.7-.6.5-1.2 1.1-1.7 1.7-.3.3-.5.6-.8.9-.5.6-1 1.3-1.5 1.9-1.4 2-2.7 4-3.8 5.8-1.1 1.8-2 3.5-2.7 4.8-.2.4-.5.9-.7 1.2-.8 1.5-1.3 2.4-1.3 2.4s.2-.2.2-.6zm-87.5 72.9c.2-.1.3-.2.5-.3.5-.2 1-.3 1.5-.3.4 0 .9.1 1.3.2s.8.4 1.1.6l3.6 3 4.5-1.3c1-.3 2-.7 3.1-1.1l.2-.1.2-.1c1.4-.7 3.2-2 5.2-3.7 11.1-9.3 30-31.1 37.5-40.1.7-.9 1.8-1.4 2.9-1.4.6 0 1.5.2 2.4.9 1.6 1.3 1.8 3.7.5 5.3-5.1 6.2-10.1 11.9-14.8 17.1-6.4 7.2-12.3 13.3-17.4 18.1-.5.4-.9.9-1.3 1.3-.9.8-1.7 1.6-2.6 2.3l-2.4 2.1c-1.9 1.6-3.6 2.9-5 3.8-.9.6-1.6 1-2.3 1.3-.4.2-.8.4-1.3.5-1.3.5-2.5.9-3.7 1.2-1.6.4-3.1.6-4.6.6-.9 0-1.8-.1-2.7-.2-.9-.1-1.7-.4-2.5-.7-.4-.2-.8-.3-1.2-.5-.4-.2-.7-.4-1-.6-1.9-1.2-2.8-2.5-3-2.9-.1-.2-.3-.4-.3-.7-.2-.5-.3-1-.2-1.4 0-1 .7-2.2 1.8-2.9zm55.4 135.3c-4.1 1.8-10.1 2.6-20.1 2.6h-.5c.2 2 .4 4.3.6 7.1 0 .5.1 1 .1 1.5.1 5.7-2.1 9.1-3.9 10.9-2.5 2.5-5.9 3.9-9.8 3.9-1.8 0-3.7-.3-5.1-.8-1.2-.4-2.2-1.1-3.1-1.9-1.9 3.6-4.9 5-6.7 5.5-1.5.4-3 .7-4.4.7-7.3 0-12.8-5.4-15.3-14.9l-2.1 1.2c-2.6 1.4-5.8 2.2-9.2 2.2-6.4 0-12.3-2.5-16-6.7-3-3.5-4.3-7.8-3.7-12.5 1.9-14.2 22.2-21.4 24.5-22.2l3.7-1.3c-.1-.4-.2-.7-.3-1.1 0-.2-.1-.5-.1-.7v-.9c0-.2 0-.3.1-.5v-.2c0-.2.1-.5.2-.7.1-.2.1-.5.2-.7 0-.1.1-.1.1-.2.1-.2.1-.3.2-.5 0-.1.1-.2.1-.2.1-.2.2-.3.3-.5 0-.1.1-.1.1-.2.1-.2.3-.5.4-.7.2-.2.3-.4.5-.7 0-.1.1-.1.1-.2.1-.2.3-.3.4-.5l.2-.2.5-.5.1-.1c.4-.4.9-.9 1.4-1.3.1-.1.1-.1.2-.1.2-.2.4-.3.6-.5l.2-.2c.2-.2.5-.3.7-.5.1 0 .1-.1.2-.1l.9-.6c.4-.2.7-.4 1.1-.6.1 0 .1-.1.2-.1.8-.4 1.6-.8 2.4-1.1.1 0 .2-.1.3-.1.4-.2.9-.3 1.3-.5s.9-.3 1.3-.4c.1 0 .2-.1.3-.1.5-.1.9-.3 1.4-.4.5-.1.9-.2 1.4-.3.1 0 .2-.1.4-.1.5-.1 1-.2 1.4-.3.5-.1 1.1-.2 1.6-.2.6-.1 1.1-.1 1.7-.2h.5c.4 0 .7 0 1.1-.1h3.9c.3 0 .6.1.9.1.4 0 .8.1 1.2.2.2 0 .5.1.7.1.3.1.6.1.8.2.2 0 .3.1.5.1.3.1.6.1.9.2.1 0 .3.1.4.1l.9.3c.1 0 .2.1.3.1 1.8.6 3.4 1.4 4.6 2.4.3.2.5.4.7.6l.8.8.3.3c.1.1.2.2.2.3.1.2.2.3.3.5.1.1.1.2.2.3h4.5c10.3.1 18.8 1.5 25.3 4.1 6.5 2.7 10.5 6.5 11.2 10.9 1.6 8.8-2.7 16.4-11.3 20.2zM96.9 170.1c-1-1.2-2.3-3-3.8-5.1-1.5-2.1-3.2-4.6-5.1-7.1-.9-1.3-1.9-2.5-2.9-3.7-.4-.4-.8-.9-1.2-1.3-.4-.4-.8-.8-1.2-1.1-.3-.2-.5-.4-.8-.6-.2-.2-.5-.3-.7-.5l-.6-.3h-.2.2l-.3.1h-.2c-.3.1-.4.2-.6.3-.2.2-.4.6-.5 1.1-.3 1-.3 2.5-.2 3.8.1 1.4.3 2.7.5 4 .4 2.5.9 4.7 1.2 6.2.2.8.3 1.4.4 1.8 0 .1 0 .2.1.3 0 .2.1.4.1.4s-.2-.2-.4-.5c-.3-.3-.7-.8-1.2-1.4-.7-.9-1.6-2.2-2.6-3.8-.3-.5-.6-1.1-.9-1.7-.2-.4-.4-.8-.6-1.3-.4-.9-.8-1.9-1.1-2.9-.4-1.6-.9-3.4-.7-5.6.1-.8.3-1.7.6-2.6.1-.3.3-.6.5-.9.7-1.2 2-2.3 3.3-2.8l.2-.1.1-.1.4-.1.3-.1.3-.1c.1 0 .5-.1.7-.1h1.5c.4.1.7.1 1.1.2 1 .3 1.9.7 2.6 1.2.2.2.5.3.7.5.4.3.7.6 1 .9.5.4.9.8 1.3 1.2.7.7 1.3 1.5 1.8 2.2 1.1 1.5 2 3 2.9 4.5.8 1.5 1.5 3 2.1 4.4.4.9.7 1.8 1 2.6.2.5.4 1 .5 1.5.2.6.4 1.3.6 1.8.5 1.8.8 3.3 1.1 4.4.1.6.2 1 .2 1.4v.4c0 .4.1.6.1.6s-.6-.7-1.6-2zm2.9 19c-.2-1.3.3-2.3.6-2.8s1.1-1.3 2.4-1.6c.3-.1.5-.1.8-.1h.4c.3 0 .8 0 1.3.1.4 0 .9.1 1.4.2.9.1 2 .3 3.4.6.8.2 1.7.4 2.7.6.8.2 1.6.4 2.5.7.5.2 1.1.3 1.7.5l2.1.6c.6.2 1.3.4 1.9.6.3.1.6.2 1 .3.7.2 1.4.5 2.1.7 1.4.5 3 1 4.6 1.6l2.4.9 1.5.6c2.4.9 5 1.9 7.8 3 .8.3 1.5.6 2.3.9 1 .4 1.9.7 2.8 1.1 1.5.6 2.9 1.1 4.3 1.6.8.3 1.5.5 2.3.8 5.6 2 10.1 3.3 13.8 4.1.3.1.6.1.9.2 1.7.4 3.2.7 4.6.9.1 0 .3 0 .4.1 1.9.3 3.5.4 4.7.4h2.3l1.8-.9c.5-.3 1.1-.4 1.7-.4.3 0 .7 0 1.1.2.4.1.9.3 1.3.7.3.2.5.4.6.7.2.3.4.6.5.9 0 .1 0 .1.1.2.1.3.1.5.2.7v.5c0 .2 0 .4-.1.7-.1.2-.1.5-.3.8-.1.3-.3.5-.5.8l-.3.3c-.1.1-.2.3-.4.4-.1.1-.2.1-.3.2-.3.2-.7.5-1.2.7-.6.3-1.5.6-2.5.8-.5.1-1.1.2-1.8.2-.7.1-1.4.1-2.2.1-2.1 0-4.5-.2-7.2-.7-2.7-.4-5.7-1.1-8.9-2s-6.8-2-10.6-3.3c-3.8-1.3-7.9-2.9-12.3-4.6-5.3-2.1-9.8-3.8-13.6-5.2-.5-.2-.9-.3-1.4-.5-10.5-3.6-15.5-4.5-17.5-4.7h-.1l-.6-.1h-.9c-1.7 0-3.2-1.3-3.6-3.1zm-3.5 78.4c0-27.8 22.6-50.3 50.3-50.3s50.3 22.6 50.3 50.3c0 27.8-22.6 50.3-50.3 50.3s-50.3-22.5-50.3-50.3zm179.4 20.4c-27.8 0-50.3-22.6-50.3-50.3 0-27.8 22.6-50.3 50.3-50.3s50.3 22.6 50.3 50.3c0 27.7-22.6 50.3-50.3 50.3zM95.1 416.4c9.2 0 15.9-4.8 20.6-11.1.3-.4.5-.7.8-1.1-3.2-7.5-7.7-18.1-12.6-30.1-3.4-8.4-7-17.6-10.6-26.9-2.3 2-5 5-7.9 9.5-3.2 4.9-6.1 12.8-7.8 21.2-1.5 7.6-1.9 15.6-.6 22.4.6 2.8 1.4 5.4 2.7 7.7 3.1 5.6 8.2 8.4 15.4 8.4zm-46.3-27.3c0 3.5 7.6 6.8 21.1 9.7-1-7-.4-14.1.5-19.6-13.8 3-21.6 6.3-21.6 9.9zm398.7-9.1c-.2.6-.4 1.1-.7 1.7-1.7 3.9-4 7.3-7.1 10.2-6.1 5.8-11.5 9.2-16.2 10.5 26.4-3.7 42.1-8.3 42.1-13.3.1-3.2-6.4-6.3-18.1-9.1z\" class=\"st0\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M440.4 378.5c3.7-8.6 2.4-18.9-.7-26.9-5.7-14.8-17.9-25.3-29.6-25.6h-.4s-2.3-.3-5.3-.3c-6.4 0-14.2 1.4-15.3 7.8-.7 4.5 1.2 6.8 5.4 11.2 4.8 5 11.3 11.8 13.2 26.1.1 1 .3 2 .4 3 2.3 14.4 6.1 21.7 11.4 21.7 2.6 0 7.4-1.6 15.4-9.1 2.5-2.4 4.3-5 5.5-7.9zM102.9 137.8c-.4-10.9-.6-21.6-.1-24.8 1.4-6.5 41.8-52.7 68.4-58.1 2.2-.4 4.8-.7 7.8-.7 30 0 87.4 21.4 94.4 25.1.4.9.9 2.6 1.5 4.9-3.3 3.4-5.9 8.6-7.3 14.7-1.4 6.2-1.1 12 .4 16.4-30.3 13.2-105.7 41.7-162.3 26.4 1.2 1.8 2.4 3.7 3.5 5.8 4.3 7.5 7.4 14.8 9.1 19.2 23.4 3.7 75.1 4.5 156.2-32 1.5-4.8 3.9-11.7 7.1-19.1-1.5 1.4-3 2-4.2 1.8-3.3-.7-5.5-8.2-3.5-17.1 1.9-8.4 6.6-14.1 9.8-14.1.2 0 .4 0 .5.1 3.2.7 5.3 7.7 3.7 16.1 10.6-19.6 22.6-29.5 35.6-29.5 4.4 0 8.2 1 11.5 3 5.5-6.7 9-11.3 9-11.3-4.1.7-12.8 1.9-12.8 1.9 32.6-12 30-44.6 30-44.6 0 5.6-16.9 19.1-16.9 19.1.8-4.9-1.9-11.3-1.9-11.3.7 6.4-19.5 22.9-19.5 22.9 1.5-3 .4-8.3.4-8.3-1.1 6-10.1 8.3-10.1 8.3 5.6-6.8 16.1-42.4 8.3-44.6-7.9-2.3-18.8 23.3-18.8 23.3-.4-6-3.8-6-3.8-6C300.4 44 285.4 59 285.4 59c-1.1-3.8-7.1-5.6-7.1-5.6 1.4 3 .6 13.8-.2 21.6l-.2-.2c-3.2-3.2-67.4-27-99-27-3.4 0-6.5.3-9 .8-16.7 3.4-36.6 20.6-46.9 30.6C110.6 91 97.3 106.5 96.4 112c-.4 2.9-.4 10.2-.2 18.3 2.3 2 4.5 4.6 6.7 7.5zm41.8 312.1c-7.2 1.6-28.2 13.1-46.4 16.6-18.2 3.5-34 5.3-39.5 7.4-5.5 2-9.8 6.1 1 10.2s63.4 5.5 68.1 0c4.7-5.5-3.2-7.9-14.7-7.8-8.2.1-7.2-2.7-7.2-3.1 0 0 .5-3.6 13.1-5.3 12.6-1.7 68.1-7 67.1-12.9s-34.3-6.7-41.5-5.1z\" class=\"st0\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"108.7\" cy=\"493.7\" class=\"st0\" rx=\"10.9\" ry=\"3.2\" transform=\"rotate(-12.285 108.609 493.667)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"83.5\" cy=\"492.3\" class=\"st0\" rx=\"11.5\" ry=\"3.1\" transform=\"rotate(-4.542 83.463 492.308) scale(1.00004)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"63.3\" cy=\"489.8\" class=\"st0\" rx=\"7.7\" ry=\"2.4\" transform=\"rotate(-7.765 63.331 489.89)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"48.4\" cy=\"487.5\" class=\"st0\" rx=\"7.4\" ry=\"1.9\" transform=\"rotate(-8.27 48.382 487.623)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"45.1\" cy=\"483.3\" class=\"st0\" rx=\"7.4\" ry=\"1.9\" transform=\"rotate(-8.27 45.007 483.428)\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"44.2\" cy=\"478.5\" class=\"st0\" rx=\"6.4\" ry=\"1.7\" transform=\"rotate(-8.27 44.156 478.58)\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M253.9 455.7c-12.5.6-40.7-.8-44.6 5.7-3.9 6.5 11.5 9 35.6 7s58.3-4.7 59.7-12.1c1.4-7.4-6.3-5.9-7.2-10.6-.8-4.7 8.6-4.7 10.4-11.7 1.8-7-12.7-6.1-25.6-6.1s-34.4 1.2-36.4 8 9.8 6.8 18.2 8.4c8.4 1.6 5.9 4.7 5.9 4.7-.2 4.2-3.5 6.1-16 6.7z\" class=\"st0\"\u003e\u003c/path\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"220.6\" cy=\"473.6\" class=\"st0\" rx=\"10.8\" ry=\"3.5\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"248.4\" cy=\"472.9\" class=\"st0\" rx=\"7.2\" ry=\"3.2\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"270.9\" cy=\"470.6\" class=\"st0\" rx=\"7.9\" ry=\"2.6\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"288.2\" cy=\"467.6\" class=\"st0\" rx=\"5.8\" ry=\"2.8\"\u003e\u003c/ellipse\u003e\u003cellipse xmlns=\"http://www.w3.org/2000/svg\" cx=\"303.2\" cy=\"464.5\" class=\"st0\" rx=\"5.8\" ry=\"2.7\"\u003e\u003c/ellipse\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M146.7 225.9c-10.8 0-20.6 4.1-28 10.8-.5.4-1 .9-1.4 1.4-7.5 7.5-12.2 17.9-12.2 29.4 0 4.3.7 8.5 1.9 12.4.4 1.3.9 2.6 1.4 3.8.5 1.2 1.1 2.5 1.8 3.6 1 1.8 2 3.5 3.2 5.1 7.6 10.2 19.7 16.7 33.4 16.7 23 0 41.6-18.6 41.6-41.6s-18.8-41.6-41.7-41.6zm-3.8 69.4c-3.6 0-6.9-1.5-9.3-3.8-.5-.5-.9-1-1.3-1.5-.3-.4-.5-.7-.7-1.1-.5-.8-.8-1.6-1.1-2.5-.1-.2-.1-.4-.2-.6-.3-1.1-.5-2.3-.5-3.6 0-7.2 5.9-13.1 13.1-13.1 5.9 0 10.9 3.9 12.5 9.2.4 1.2.6 2.5.6 3.9 0 7.2-5.8 13.1-13.1 13.1zM290 198.4c-2.5-.9-5.2-1.6-8-2-2.1-.3-4.2-.5-6.3-.5-9.3 0-18 3.1-24.9 8.3-3.2 2.4-6.1 5.2-8.5 8.5-1.2 1.6-2.3 3.3-3.2 5.1l-1.8 3.6c-.5 1.2-1 2.5-1.4 3.8-1.2 3.9-1.9 8.1-1.9 12.4 0 5 .9 9.9 2.5 14.3.2.6.5 1.3.7 1.9 1.1 2.5 2.3 4.9 3.8 7.1.4.6.8 1.1 1.2 1.6.8 1.1 1.7 2.1 2.5 3.1 1.3 1.5 2.8 2.9 4.3 4.1 7.2 5.9 16.4 9.5 26.5 9.5 23 0 41.6-18.6 41.6-41.6.2-18-11.2-33.3-27.1-39.2zm-14.8 65.1c-1.6.7-3.3 1-5.1 1-1.4 0-2.7-.2-3.9-.6-1.5-.5-3-1.2-4.2-2.2-.4-.3-.8-.7-1.2-1-.3-.3-.6-.6-.8-.9-.4-.5-.8-1.1-1.2-1.7-.3-.5-.6-1-.8-1.6-.3-.7-.5-1.4-.7-2.1-.2-1-.4-1.9-.4-3 0-.5 0-.9.1-1.3 0-.4.1-.9.2-1.3 1-4.7 4.4-8.5 9-9.9 1.2-.4 2.5-.6 3.9-.6 1.8 0 3.5.4 5.1 1 .8.3 1.5.7 2.2 1.2.4.2.7.5 1 .8 2.9 2.4 4.8 6.1 4.8 10.1 0 5.4-3.3 10.1-8 12.1zm-51 80.8c-.4-1-.7-2-.9-2.8-.9-3.1-1.6-6.3-2-8.7-1.1.4-2.2.8-3.3 1.3-3.7 1.8-7 3.8-10 5.7-.1 0-.1.1-.2.1.8 3.7 3.3 11.8 9.8 11.8.8 0 1.7-.1 2.6-.4 3-1 4-3.8 4-7zm8.9-13.6c-1.9 0-3.3.1-4.2.2-.6.1-1.1.2-1.7.3.4 2.3 1 5.5 1.9 8.5 1.1 3.8 2.7 7.3 4.8 8.1.6.2 1.7.4 2.9.4 3.3 0 7.7-1.5 7.6-8.5v-1.1c-.3-3.4-.5-5.8-.7-7.6-1.1 0-2.3-.1-3.3-.1-2.6-.1-5.2-.2-7.3-.2z\" class=\"st0\"\u003e\u003c/path\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M245.5 299.4s-1.2 14-20.9 16.9c-3.7.6-6.9.8-9.7.8-10.5 0-14.6-3.5-17.1-6.5 0 0-18.9 6.4-20.4 17.2-1.1 8.1 6.7 12.3 13.6 12.3 2.3 0 4.5-.5 6.3-1.4 6.9-3.8 17.2-12.1 30.9-13.9 1.2-.2 3-.2 5-.2 4.7 0 11.1.3 17.3.3 7.1 0 13.9-.4 17.6-2.1 8.5-3.8 8.5-10.3 7.9-13.5-.6-3.6-9.2-9.7-30.5-9.9z\" class=\"st0\"\u003e\u003c/path\u003e\u003c/svg\u003e"
+ },
+ "model": {
+ "version": "jaeger-3.1.2"
+ },
+ "name": "jaeger-operator",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "enabled",
+ "subCategory": "Tracing",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ }
\ No newline at end of file
diff --git a/server/meshmodel/k8gb/v0.13.0/v1.0.0/components/DNSEndpoint.json b/server/meshmodel/k8gb/v0.13.0/v1.0.0/components/DNSEndpoint.json
new file mode 100644
index 00000000000..a9a8ef00ee2
--- /dev/null
+++ b/server/meshmodel/k8gb/v0.13.0/v1.0.0/components/DNSEndpoint.json
@@ -0,0 +1,72 @@
+{
+ "capabilities": null,
+ "component": {
+ "kind": "DNSEndpoint",
+ "schema": "{\n \"properties\": {\n \"spec\": {\n \"description\": \"DNSEndpointSpec defines the desired state of DNSEndpoint\",\n \"properties\": {\n \"endpoints\": {\n \"items\": {\n \"description\": \"Endpoint is a high-level way of a connection between a service and an IP\",\n \"properties\": {\n \"dnsName\": {\n \"description\": \"The hostname of the DNS record\",\n \"type\": \"string\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels stores labels defined for the Endpoint\",\n \"type\": \"object\"\n },\n \"providerSpecific\": {\n \"description\": \"ProviderSpecific stores provider specific config\",\n \"items\": {\n \"description\": \"ProviderSpecificProperty holds the name and value of a configuration which is specific to individual DNS providers\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"recordTTL\": {\n \"description\": \"TTL for the record\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"recordType\": {\n \"description\": \"RecordType type of record, e.g. CNAME, A, SRV, TXT etc\",\n \"type\": \"string\"\n },\n \"setIdentifier\": {\n \"description\": \"Identifier to distinguish multiple records with the same name and type (e.g. Route53 records with routing policies other than 'simple')\",\n \"type\": \"string\"\n },\n \"targets\": {\n \"description\": \"The targets the DNS record points to\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"title\": \"DNS Endpoint\",\n \"type\": \"object\"\n}",
+ "version": "externaldns.k8s.io/v1alpha1"
+ },
+ "configuration": null,
+ "description": "",
+ "displayName": "DNS Endpoint",
+ "format": "JSON",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "genealogy": "",
+ "isAnnotation": false,
+ "isNamespaced": true,
+ "published": false,
+ "source_uri": "git://github.com/k8gb-io/k8gb/master/chart/k8gb/crd"
+ },
+ "model": {
+ "category": {
+ "name": "Orchestration \u0026 Management"
+ },
+ "displayName": "K8GB",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "metadata": {
+ "isAnnotation": false,
+ "primaryColor": "#be0028",
+ "secondaryColor": "#FF456D\n",
+ "shape": "circle",
+ "source_uri": "git://github.com/k8gb-io/k8gb/master/chart/k8gb/crd",
+ "styleOverrides": "",
+ "svgColor": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 104.1 101.6\" style=\"enable-background:new 0 0 104.1 101.6\" xml:space=\"preserve\" height=\"20\" width=\"20\"\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"m50.8.3-39.5 19c-.8.4-1.4 1.1-1.6 2L.1 63.9c-.2.8 0 1.7.6 2.4L28 100.5c.5.7 1.4 1.1 2.2 1.1H74c.9 0 1.7-.4 2.2-1.1l27.3-34.2c.5-.7.7-1.6.6-2.4l-9.7-42.7c-.2-.9-.8-1.6-1.6-2L53.4.2c-.9-.3-1.8-.3-2.6.1z\" style=\"fill:#fff\"\u003e\u003c/path\u003e\u003clinearGradient xmlns=\"http://www.w3.org/2000/svg\" id=\"a\" gradientUnits=\"userSpaceOnUse\" x1=\"-.001\" y1=\"50.811\" x2=\"104.073\" y2=\"50.811\"\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"0\" style=\"stop-color:#f52d28\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\".25\" style=\"stop-color:#dc0032\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\".5\" style=\"stop-color:#be0028\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\".75\" style=\"stop-color:#aa052d\"\u003e\u003c/stop\u003e\u003cstop xmlns=\"http://www.w3.org/2000/svg\" offset=\"1\" style=\"stop-color:#960528\"\u003e\u003c/stop\u003e\u003c/linearGradient\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" d=\"M53.6 39.9c-.1-.1-.1-.2-.1-.3V24.3c0-.1.1-.3.2-.4.1-.1.2-.1.3-.1 4.9 1.1 9.3 6.3 12 14v.4c-.1.1-.2.2-.3.2-3.8 1-7.8 1.5-11.7 1.6-.1 0-.3 0-.4-.1zm-3.5 3c-4.2-.1-8.5-.7-12.6-1.8h-.1c-.1 0-.2 0-.2.1-.1.1-.2.2-.2.3-.7 3.1-1.2 6.2-1.3 9.3 0 .2.2.5.4.5H50c.3 0 .5-.2.5-.5v-7.5c.1-.2-.1-.4-.4-.4zm0-19H50c-4.9 1.1-9.3 6.3-12 13.9-.1.1-.1.3 0 .4.1.1.2.2.3.2 3.9 1 7.8 1.5 11.8 1.6.3 0 .5-.2.5-.5V24.3c0-.2-.2-.4-.5-.4zm0 30.3H36.2c-.1 0-.2.1-.3.1-.1.1-.1.2-.1.3.1 3.1.5 6.2 1.3 9.3 0 .1.1.2.2.3.1 0 .2.1.2.1h.1c4.1-1.1 8.3-1.6 12.6-1.8.3 0 .5-.2.5-.5v-7.5c-.1-.1-.3-.3-.6-.3zM35.2 68.5c-.1-.2-.2-.3-.4-.3h-.2c-1.7.6-3.4 1.4-5 2.3-.1.1-.2.2-.2.3 0 .1 0 .3.1.4 2.8 3.4 6.4 6.1 10.4 8h.2c.1 0 .3-.1.4-.2.1-.2.1-.4 0-.6-2.3-2.9-4.1-6.3-5.3-9.9zm-2.4-17.6c.1-3.5.6-6.9 1.4-10.3.1-.2-.1-.5-.3-.5-2.1-.7-4.1-1.6-6-2.8-.1 0-.2-.1-.2-.1-.2 0-.3.1-.4.2-2.5 4-4 8.6-4.3 13.4 0 .1 0 .2.1.3.1.1.2.2.3.2h8.9c.3 0 .5-.2.5-.4zm17.3 14.6c-4 .1-7.9.7-11.7 1.6-.1 0-.2.1-.3.2v.4c2.6 7.6 7.1 12.8 12 13.9h.1c.1 0 .2 0 .3-.1.1-.1.2-.2.2-.4V66c0-.1-.1-.2-.1-.3-.2-.2-.3-.2-.5-.2zm15.6 1.6c-3.8-1-7.7-1.5-11.7-1.6-.1 0-.2 0-.3.1-.1.1-.1.2-.1.3v15.2c0 .1.1.3.2.4.1.1.2.1.3.1h.1c4.9-1.1 9.3-6.3 11.9-13.9 0-.2-.1-.5-.4-.6zm4.2-26.5c.8 3.4 1.3 6.8 1.4 10.3 0 .3.2.5.5.5h8.9c.1 0 .3-.1.3-.2.1-.1.1-.2.1-.3-.3-4.7-1.8-9.3-4.3-13.4-.1-.1-.2-.2-.4-.2-.1 0-.2 0-.2.1-1.9 1.1-3.9 2-6 2.8-.3-.1-.4.2-.3.4zm25.4 21.3c.1.6 0 1.2-.4 1.6l-23 28.8c-.4.5-.9.7-1.5.7H33.6c-.6 0-1.1-.3-1.5-.7l-23-28.8c-.4-.5-.5-1-.4-1.6L17 26c.1-.6.5-1 1-1.3l33.2-16c.5-.3 1.1-.3 1.6 0l33.2 16c.5.3.9.7 1 1.3l8.3 35.9zM84 52.8c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.4 32-32zm19.4 13.5-27.2 34.2c-.5.7-1.4 1.1-2.2 1.1H30.2c-.9 0-1.7-.4-2.2-1.1L.6 66.3c-.5-.7-.8-1.6-.6-2.4l9.7-42.7c.2-.9.8-1.6 1.6-2L50.8.2c.8-.4 1.7-.4 2.5 0l39.4 19c.8.4 1.4 1.1 1.6 2l9.7 42.7c.2.8 0 1.7-.6 2.4zm-4.8-5.2-8.2-35.9c-.4-1.6-1.4-2.9-2.9-3.6l-33.2-16c-1.5-.7-3.2-.7-4.6 0l-33.2 16c-1.5.7-2.5 2-2.9 3.6l-8.2 36c-.4 1.6 0 3.3 1 4.5l23 28.8c1 1.3 2.6 2 4.2 2h36.8c1.6 0 3.2-.7 4.2-2l23-28.8c1-1.3 1.4-3 1-4.6zm-30.7-6.9h-14c-.3 0-.5.2-.5.5v7.5c0 .3.2.5.5.5 4.2.1 8.5.7 12.6 1.7h.1c.1 0 .2 0 .2-.1.1-.1.2-.2.2-.3.7-3.1 1.2-6.2 1.3-9.3 0-.1 0-.2-.1-.3-.1-.2-.2-.2-.3-.2zm6.7-19.5c0-.1 0-.3-.1-.4-2.8-3.4-6.4-6.2-10.4-8h-.2c-.1 0-.3.1-.4.2-.1.2-.1.4 0 .6 2.3 3 4.1 6.4 5.3 10 .1.2.2.3.4.3h.2c1.7-.6 3.4-1.4 5-2.3.2-.1.2-.3.2-.4zm6 19.5h-8.9c-.3 0-.5.2-.5.5-.1 3.5-.6 6.9-1.4 10.3-.1.2.1.5.3.6 2.1.7 4.1 1.6 6 2.8.1 0 .1.1.2.1.2 0 .3-.1.4-.2 2.5-4 4-8.6 4.3-13.4 0-.1 0-.3-.1-.3 0-.3-.2-.4-.3-.4z\" style=\"fill:url(#a)\"\u003e\u003c/path\u003e\u003c/svg\u003e",
+ "svgComplete": "",
+ "svgWhite": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\u003c!DOCTYPE svg\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 104.07 101.62\" height=\"20\" width=\"20\"\u003e\u003cdefs xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cstyle xmlns=\"http://www.w3.org/2000/svg\"\u003e.a{fill:#fff;}\u003c/style\u003e\u003c/defs\u003e\u003cpath xmlns=\"http://www.w3.org/2000/svg\" class=\"a\" d=\"M53.62,39.89a.44.44,0,0,1-.14-.33V24.33a.47.47,0,0,1,.18-.36.42.42,0,0,1,.28-.1h.11C58.91,25,63.38,30.2,66,37.82a.48.48,0,0,1,0,.37.44.44,0,0,1-.29.22A53.88,53.88,0,0,1,54,40h0A.44.44,0,0,1,53.62,39.89Zm-3.48,3a57.14,57.14,0,0,1-12.57-1.75l-.11,0a.4.4,0,0,0-.24.07.45.45,0,0,0-.21.29,47.15,47.15,0,0,0-1.27,9.32.45.45,0,0,0,.46.48H50.13a.47.47,0,0,0,.46-.46V43.38A.46.46,0,0,0,50.14,42.92Zm0-19H50c-4.87,1.11-9.34,6.32-12,13.93a.47.47,0,0,0,0,.37.44.44,0,0,0,.29.23A54.06,54.06,0,0,0,50.11,40h0a.46.46,0,0,0,.46-.46V24.33a.45.45,0,0,0-.46-.46Zm0,30.33H36.2a.48.48,0,0,0-.34.14.46.46,0,0,0-.12.34A47.15,47.15,0,0,0,37,64a.45.45,0,0,0,.21.29.48.48,0,0,0,.24.06h.11a56.55,56.55,0,0,1,12.57-1.75.46.46,0,0,0,.45-.46V54.66A.47.47,0,0,0,50.13,54.2ZM35.24,68.54a.48.48,0,0,0-.44-.32.45.45,0,0,0-.16,0,30.39,30.39,0,0,0-5,2.28.46.46,0,0,0-.23.31.47.47,0,0,0,.1.38,29.5,29.5,0,0,0,10.41,8,.43.43,0,0,0,.19,0,.46.46,0,0,0,.37-.18.47.47,0,0,0,0-.57A31.66,31.66,0,0,1,35.24,68.54Zm-2.4-17.68A50.87,50.87,0,0,1,34.2,40.6a.46.46,0,0,0-.29-.55,33.58,33.58,0,0,1-6-2.75.55.55,0,0,0-.24-.07.44.44,0,0,0-.39.22A29,29,0,0,0,23,50.82a.47.47,0,0,0,.12.34.45.45,0,0,0,.34.15h8.92A.47.47,0,0,0,32.84,50.86ZM50.13,65.48h0A54,54,0,0,0,38.4,67.1a.46.46,0,0,0-.29.22.48.48,0,0,0,0,.37c2.61,7.62,7.08,12.83,12,13.94h.1a.53.53,0,0,0,.29-.1.46.46,0,0,0,.17-.36V66a.48.48,0,0,0-.14-.34A.48.48,0,0,0,50.13,65.48Zm15.54,1.61A54,54,0,0,0,54,65.48h0a.48.48,0,0,0-.32.13.48.48,0,0,0-.14.34V81.18a.47.47,0,0,0,.18.36.48.48,0,0,0,.28.1h.11c4.86-1.11,9.33-6.32,11.94-13.94a.47.47,0,0,0-.32-.6Zm4.2-26.49a50.16,50.16,0,0,1,1.36,10.26.47.47,0,0,0,.47.45h8.91a.45.45,0,0,0,.34-.15.44.44,0,0,0,.12-.34,29,29,0,0,0-4.29-13.37.44.44,0,0,0-.39-.22.39.39,0,0,0-.23.07,34.24,34.24,0,0,1-6,2.75A.47.47,0,0,0,69.87,40.6ZM95.26,61.94a1.91,1.91,0,0,1-.37,1.61l-23,28.81a1.88,1.88,0,0,1-1.49.71H33.62a1.85,1.85,0,0,1-1.49-.71l-23-28.81a1.91,1.91,0,0,1-.37-1.61L17,26.05a1.9,1.9,0,0,1,1-1.29l33.2-16a1.82,1.82,0,0,1,1.64,0L86,24.74a1.88,1.88,0,0,1,1,1.29ZM84,52.75a32,32,0,1,0-32,32A32,32,0,0,0,84,52.75Zm19.41,13.56L76.16,100.54a2.89,2.89,0,0,1-2.25,1.08H30.16a2.87,2.87,0,0,1-2.24-1.08L.63,66.31a2.85,2.85,0,0,1-.56-2.42L9.79,21.22a2.86,2.86,0,0,1,1.55-1.95L50.8.28a2.93,2.93,0,0,1,2.49,0l39.42,19a2.9,2.9,0,0,1,1.56,1.95L104,63.89A2.85,2.85,0,0,1,103.45,66.31Zm-4.81-5.16-8.2-35.9a5.33,5.33,0,0,0-2.89-3.63l-33.2-16a5.32,5.32,0,0,0-4.64,0l-33.18,16a5.33,5.33,0,0,0-2.89,3.63L5.44,61.15a5.31,5.31,0,0,0,1,4.53l23,28.81a5.3,5.3,0,0,0,4.19,2H70.44a5.32,5.32,0,0,0,4.2-2l23-28.81A5.35,5.35,0,0,0,98.64,61.15ZM67.87,54.2H53.94a.47.47,0,0,0-.46.46v7.47a.46.46,0,0,0,.45.46A56.39,56.39,0,0,1,66.5,64.34h.12a.46.46,0,0,0,.23-.06.49.49,0,0,0,.22-.29,47.91,47.91,0,0,0,1.27-9.32.51.51,0,0,0-.13-.34A.48.48,0,0,0,67.87,54.2Zm6.75-19.54a.45.45,0,0,0-.1-.37,29.27,29.27,0,0,0-10.41-8,.41.41,0,0,0-.19,0,.44.44,0,0,0-.36.18.47.47,0,0,0,0,.57,31.82,31.82,0,0,1,5.28,10,.43.43,0,0,0,.43.31.41.41,0,0,0,.16,0,30,30,0,0,0,5-2.28A.5.5,0,0,0,74.62,34.66Zm6,19.54H71.7a.47.47,0,0,0-.47.45,50.26,50.26,0,0,1-1.36,10.26.47.47,0,0,0,.3.55,33.86,33.86,0,0,1,6,2.75.46.46,0,0,0,.23.06.44.44,0,0,0,.39-.21,29,29,0,0,0,4.29-13.37.42.42,0,0,0-.12-.34A.45.45,0,0,0,80.61,54.2Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\n"
+ },
+ "model": {
+ "version": "v0.13.0"
+ },
+ "name": "k8gb",
+ "registrant": {
+ "created_at": "0001-01-01T00:00:00Z",
+ "credential_id": "00000000-0000-0000-0000-000000000000",
+ "deleted_at": "0001-01-01T00:00:00Z",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "kind": "github",
+ "name": "Github",
+ "status": "discovered",
+ "sub_type": "",
+ "type": "registry",
+ "updated_at": "0001-01-01T00:00:00Z",
+ "user_id": "00000000-0000-0000-0000-000000000000"
+ },
+ "connection_id": "00000000-0000-0000-0000-000000000000",
+ "schemaVersion": "models.meshery.io/v1beta1",
+ "status": "ignored",
+ "subCategory": "Coordination \u0026 Service Discovery",
+ "version": "v1.0.0",
+ "components": null,
+ "relationships": null
+ },
+ "schemaVersion": "components.meshery.io/v1beta1",
+ "status": "ignored",
+ "styles": {
+ "primaryColor": "#be0028",
+ "secondaryColor": "#FF456D\n",
+ "shape": "circle",
+ "svgColor": "\u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 104.1 101.6\" style=\"enable-background:new 0 0 104.1 101.6\" xml:space=\"preserve\"\u003e\u003cpath d=\"m50.8.3-39.5 19c-.8.4-1.4 1.1-1.6 2L.1 63.9c-.2.8 0 1.7.6 2.4L28 100.5c.5.7 1.4 1.1 2.2 1.1H74c.9 0 1.7-.4 2.2-1.1l27.3-34.2c.5-.7.7-1.6.6-2.4l-9.7-42.7c-.2-.9-.8-1.6-1.6-2L53.4.2c-.9-.3-1.8-.3-2.6.1z\" style=\"fill:#fff\"/\u003e\u003clinearGradient id=\"a\" gradientUnits=\"userSpaceOnUse\" x1=\"-.001\" y1=\"50.811\" x2=\"104.073\" y2=\"50.811\"\u003e\u003cstop offset=\"0\" style=\"stop-color:#f52d28\"/\u003e\u003cstop offset=\".25\" style=\"stop-color:#dc0032\"/\u003e\u003cstop offset=\".5\" style=\"stop-color:#be0028\"/\u003e\u003cstop offset=\".75\" style=\"stop-color:#aa052d\"/\u003e\u003cstop offset=\"1\" style=\"stop-color:#960528\"/\u003e\u003c/linearGradient\u003e\u003cpath d=\"M53.6 39.9c-.1-.1-.1-.2-.1-.3V24.3c0-.1.1-.3.2-.4.1-.1.2-.1.3-.1 4.9 1.1 9.3 6.3 12 14v.4c-.1.1-.2.2-.3.2-3.8 1-7.8 1.5-11.7 1.6-.1 0-.3 0-.4-.1zm-3.5 3c-4.2-.1-8.5-.7-12.6-1.8h-.1c-.1 0-.2 0-.2.1-.1.1-.2.2-.2.3-.7 3.1-1.2 6.2-1.3 9.3 0 .2.2.5.4.5H50c.3 0 .5-.2.5-.5v-7.5c.1-.2-.1-.4-.4-.4zm0-19H50c-4.9 1.1-9.3 6.3-12 13.9-.1.1-.1.3 0 .4.1.1.2.2.3.2 3.9 1 7.8 1.5 11.8 1.6.3 0 .5-.2.5-.5V24.3c0-.2-.2-.4-.5-.4zm0 30.3H36.2c-.1 0-.2.1-.3.1-.1.1-.1.2-.1.3.1 3.1.5 6.2 1.3 9.3 0 .1.1.2.2.3.1 0 .2.1.2.1h.1c4.1-1.1 8.3-1.6 12.6-1.8.3 0 .5-.2.5-.5v-7.5c-.1-.1-.3-.3-.6-.3zM35.2 68.5c-.1-.2-.2-.3-.4-.3h-.2c-1.7.6-3.4 1.4-5 2.3-.1.1-.2.2-.2.3 0 .1 0 .3.1.4 2.8 3.4 6.4 6.