557 lines
26 KiB
JSON
557 lines
26 KiB
JSON
{
|
|
"description": "Kustomization is the Schema for the kustomizations API.",
|
|
"properties": {
|
|
"apiVersion": {
|
|
"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",
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"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",
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object"
|
|
},
|
|
"spec": {
|
|
"description": "KustomizationSpec defines the desired state of a kustomization.",
|
|
"properties": {
|
|
"decryption": {
|
|
"description": "Decrypt Kubernetes secrets before applying them on the cluster.",
|
|
"properties": {
|
|
"provider": {
|
|
"description": "Provider is the name of the decryption engine.",
|
|
"enum": [
|
|
"sops"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"secretRef": {
|
|
"description": "The secret name containing the private OpenPGP keys used for decryption.",
|
|
"properties": {
|
|
"name": {
|
|
"description": "Name of the referent.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": [
|
|
"provider"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"dependsOn": {
|
|
"description": "DependsOn may contain a meta.NamespacedObjectReference slice\nwith references to Kustomization resources that must be ready before this\nKustomization can be reconciled.",
|
|
"items": {
|
|
"description": "NamespacedObjectReference contains enough information to locate the referenced Kubernetes resource object in any\nnamespace.",
|
|
"properties": {
|
|
"name": {
|
|
"description": "Name of the referent.",
|
|
"type": "string"
|
|
},
|
|
"namespace": {
|
|
"description": "Namespace of the referent, when not specified it acts as LocalObjectReference.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"type": "array"
|
|
},
|
|
"force": {
|
|
"default": false,
|
|
"description": "Force instructs the controller to recreate resources\nwhen patching fails due to an immutable field change.",
|
|
"type": "boolean"
|
|
},
|
|
"healthChecks": {
|
|
"description": "A list of resources to be included in the health assessment.",
|
|
"items": {
|
|
"description": "NamespacedObjectKindReference contains enough information to locate the typed referenced Kubernetes resource object\nin any namespace.",
|
|
"properties": {
|
|
"apiVersion": {
|
|
"description": "API version of the referent, if not specified the Kubernetes preferred version will be used.",
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"description": "Kind of the referent.",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"description": "Name of the referent.",
|
|
"type": "string"
|
|
},
|
|
"namespace": {
|
|
"description": "Namespace of the referent, when not specified it acts as LocalObjectReference.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"kind",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"type": "array"
|
|
},
|
|
"images": {
|
|
"description": "Images is a list of (image name, new name, new tag or digest)\nfor changing image names, tags or digests. This can also be achieved with a\npatch, but this operator is simpler to specify.",
|
|
"items": {
|
|
"description": "Image contains an image name, a new name, a new tag or digest, which will replace the original name and tag.",
|
|
"properties": {
|
|
"digest": {
|
|
"description": "Digest is the value used to replace the original image tag.\nIf digest is present NewTag value is ignored.",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"description": "Name is a tag-less image name.",
|
|
"type": "string"
|
|
},
|
|
"newName": {
|
|
"description": "NewName is the value used to replace the original name.",
|
|
"type": "string"
|
|
},
|
|
"newTag": {
|
|
"description": "NewTag is the value used to replace the original tag.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"type": "array"
|
|
},
|
|
"interval": {
|
|
"description": "The interval at which to reconcile the Kustomization.",
|
|
"type": "string"
|
|
},
|
|
"kubeConfig": {
|
|
"description": "The KubeConfig for reconciling the Kustomization on a remote cluster.\nWhen specified, KubeConfig takes precedence over ServiceAccountName.",
|
|
"properties": {
|
|
"secretRef": {
|
|
"description": "SecretRef holds the name to a secret that contains a 'value' key with\nthe kubeconfig file as the value. It must be in the same namespace as\nthe Kustomization.\nIt is recommended that the kubeconfig is self-contained, and the secret\nis regularly updated if credentials such as a cloud-access-token expire.\nCloud specific `cmd-path` auth helpers will not function without adding\nbinaries and credentials to the Pod that is responsible for reconciling\nthe Kustomization.",
|
|
"properties": {
|
|
"name": {
|
|
"description": "Name of the referent.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"patches": {
|
|
"description": "Strategic merge and JSON patches, defined as inline YAML objects,\ncapable of targeting objects based on kind, label and annotation selectors.",
|
|
"items": {
|
|
"description": "Patch contains an inline StrategicMerge or JSON6902 patch, and the target the patch should\nbe applied to.",
|
|
"properties": {
|
|
"patch": {
|
|
"description": "Patch contains an inline StrategicMerge patch or an inline JSON6902 patch with\nan array of operation objects.",
|
|
"type": "string"
|
|
},
|
|
"target": {
|
|
"description": "Target points to the resources that the patch document should be applied to.",
|
|
"properties": {
|
|
"annotationSelector": {
|
|
"description": "AnnotationSelector is a string that follows the label selection expression\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api\nIt matches with the resource annotations.",
|
|
"type": "string"
|
|
},
|
|
"group": {
|
|
"description": "Group is the API group to select resources from.\nTogether with Version and Kind it is capable of unambiguously identifying and/or selecting resources.\nhttps://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md",
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"description": "Kind of the API Group to select resources from.\nTogether with Group and Version it is capable of unambiguously\nidentifying and/or selecting resources.\nhttps://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md",
|
|
"type": "string"
|
|
},
|
|
"labelSelector": {
|
|
"description": "LabelSelector is a string that follows the label selection expression\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api\nIt matches with the resource labels.",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"description": "Name to match resources with.",
|
|
"type": "string"
|
|
},
|
|
"namespace": {
|
|
"description": "Namespace to select resources from.",
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"description": "Version of the API Group to select resources from.\nTogether with Group and Kind it is capable of unambiguously identifying and/or selecting resources.\nhttps://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": [
|
|
"patch"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"type": "array"
|
|
},
|
|
"patchesJson6902": {
|
|
"description": "JSON 6902 patches, defined as inline YAML objects.",
|
|
"items": {
|
|
"description": "JSON6902Patch contains a JSON6902 patch and the target the patch should be applied to.",
|
|
"properties": {
|
|
"patch": {
|
|
"description": "Patch contains the JSON6902 patch document with an array of operation objects.",
|
|
"items": {
|
|
"description": "JSON6902 is a JSON6902 operation object.\nhttps://datatracker.ietf.org/doc/html/rfc6902#section-4",
|
|
"properties": {
|
|
"from": {
|
|
"description": "From contains a JSON-pointer value that references a location within the target document where the operation is\nperformed. The meaning of the value depends on the value of Op, and is NOT taken into account by all operations.",
|
|
"type": "string"
|
|
},
|
|
"op": {
|
|
"description": "Op indicates the operation to perform. Its value MUST be one of \"add\", \"remove\", \"replace\", \"move\", \"copy\", or\n\"test\".\nhttps://datatracker.ietf.org/doc/html/rfc6902#section-4",
|
|
"enum": [
|
|
"test",
|
|
"remove",
|
|
"add",
|
|
"replace",
|
|
"move",
|
|
"copy"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"description": "Path contains the JSON-pointer value that references a location within the target document where the operation\nis performed. The meaning of the value depends on the value of Op.",
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"description": "Value contains a valid JSON structure. The meaning of the value depends on the value of Op, and is NOT taken into\naccount by all operations.",
|
|
"x-kubernetes-preserve-unknown-fields": true
|
|
}
|
|
},
|
|
"required": [
|
|
"op",
|
|
"path"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"type": "array"
|
|
},
|
|
"target": {
|
|
"description": "Target points to the resources that the patch document should be applied to.",
|
|
"properties": {
|
|
"annotationSelector": {
|
|
"description": "AnnotationSelector is a string that follows the label selection expression\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api\nIt matches with the resource annotations.",
|
|
"type": "string"
|
|
},
|
|
"group": {
|
|
"description": "Group is the API group to select resources from.\nTogether with Version and Kind it is capable of unambiguously identifying and/or selecting resources.\nhttps://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md",
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"description": "Kind of the API Group to select resources from.\nTogether with Group and Version it is capable of unambiguously\nidentifying and/or selecting resources.\nhttps://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md",
|
|
"type": "string"
|
|
},
|
|
"labelSelector": {
|
|
"description": "LabelSelector is a string that follows the label selection expression\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api\nIt matches with the resource labels.",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"description": "Name to match resources with.",
|
|
"type": "string"
|
|
},
|
|
"namespace": {
|
|
"description": "Namespace to select resources from.",
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"description": "Version of the API Group to select resources from.\nTogether with Group and Kind it is capable of unambiguously identifying and/or selecting resources.\nhttps://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": [
|
|
"patch",
|
|
"target"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"type": "array"
|
|
},
|
|
"patchesStrategicMerge": {
|
|
"description": "Strategic merge patches, defined as inline YAML objects.",
|
|
"items": {
|
|
"x-kubernetes-preserve-unknown-fields": true
|
|
},
|
|
"type": "array"
|
|
},
|
|
"path": {
|
|
"description": "Path to the directory containing the kustomization.yaml file, or the\nset of plain YAMLs a kustomization.yaml should be generated for.\nDefaults to 'None', which translates to the root path of the SourceRef.",
|
|
"type": "string"
|
|
},
|
|
"postBuild": {
|
|
"description": "PostBuild describes which actions to perform on the YAML manifest\ngenerated by building the kustomize overlay.",
|
|
"properties": {
|
|
"substitute": {
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "Substitute holds a map of key/value pairs.\nThe variables defined in your YAML manifests\nthat match any of the keys defined in the map\nwill be substituted with the set value.\nIncludes support for bash string replacement functions\ne.g. ${var:=default}, ${var:position} and ${var/substring/replacement}.",
|
|
"type": "object"
|
|
},
|
|
"substituteFrom": {
|
|
"description": "SubstituteFrom holds references to ConfigMaps and Secrets containing\nthe variables and their values to be substituted in the YAML manifests.\nThe ConfigMap and the Secret data keys represent the var names and they\nmust match the vars declared in the manifests for the substitution to happen.",
|
|
"items": {
|
|
"description": "SubstituteReference contains a reference to a resource containing\nthe variables name and value.",
|
|
"properties": {
|
|
"kind": {
|
|
"description": "Kind of the values referent, valid values are ('Secret', 'ConfigMap').",
|
|
"enum": [
|
|
"Secret",
|
|
"ConfigMap"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"description": "Name of the values referent. Should reside in the same namespace as the\nreferring resource.",
|
|
"maxLength": 253,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"kind",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"prune": {
|
|
"description": "Prune enables garbage collection.",
|
|
"type": "boolean"
|
|
},
|
|
"retryInterval": {
|
|
"description": "The interval at which to retry a previously failed reconciliation.\nWhen not specified, the controller uses the KustomizationSpec.Interval\nvalue to retry failures.",
|
|
"type": "string"
|
|
},
|
|
"serviceAccountName": {
|
|
"description": "The name of the Kubernetes service account to impersonate\nwhen reconciling this Kustomization.",
|
|
"type": "string"
|
|
},
|
|
"sourceRef": {
|
|
"description": "Reference of the source where the kustomization file is.",
|
|
"properties": {
|
|
"apiVersion": {
|
|
"description": "API version of the referent",
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"description": "Kind of the referent",
|
|
"enum": [
|
|
"GitRepository",
|
|
"Bucket"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"description": "Name of the referent",
|
|
"type": "string"
|
|
},
|
|
"namespace": {
|
|
"description": "Namespace of the referent, defaults to the Kustomization namespace",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"kind",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"suspend": {
|
|
"description": "This flag tells the controller to suspend subsequent kustomize executions,\nit does not apply to already started executions. Defaults to false.",
|
|
"type": "boolean"
|
|
},
|
|
"targetNamespace": {
|
|
"description": "TargetNamespace sets or overrides the namespace in the\nkustomization.yaml file.",
|
|
"maxLength": 63,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
"timeout": {
|
|
"description": "Timeout for validation, apply and health checking operations.\nDefaults to 'Interval' duration.",
|
|
"type": "string"
|
|
},
|
|
"validation": {
|
|
"description": "Validate the Kubernetes objects before applying them on the cluster.\nThe validation strategy can be 'client' (local dry-run), 'server'\n(APIServer dry-run) or 'none'.\nWhen 'Force' is 'true', validation will fallback to 'client' if set to\n'server' because server-side validation is not supported in this scenario.",
|
|
"enum": [
|
|
"none",
|
|
"client",
|
|
"server"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"interval",
|
|
"prune",
|
|
"sourceRef"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"status": {
|
|
"default": {
|
|
"observedGeneration": -1
|
|
},
|
|
"description": "KustomizationStatus defines the observed state of a kustomization.",
|
|
"properties": {
|
|
"conditions": {
|
|
"items": {
|
|
"description": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}",
|
|
"properties": {
|
|
"lastTransitionTime": {
|
|
"description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.",
|
|
"format": "date-time",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.",
|
|
"maxLength": 32768,
|
|
"type": "string"
|
|
},
|
|
"observedGeneration": {
|
|
"description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
|
|
"format": "int64",
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
"reason": {
|
|
"description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.",
|
|
"maxLength": 1024,
|
|
"minLength": 1,
|
|
"pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$",
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"description": "status of the condition, one of True, False, Unknown.",
|
|
"enum": [
|
|
"True",
|
|
"False",
|
|
"Unknown"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"description": "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)",
|
|
"maxLength": 316,
|
|
"pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"lastTransitionTime",
|
|
"message",
|
|
"reason",
|
|
"status",
|
|
"type"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"type": "array"
|
|
},
|
|
"lastAppliedRevision": {
|
|
"description": "The last successfully applied revision.\nThe revision format for Git sources is <branch|tag>/<commit-sha>.",
|
|
"type": "string"
|
|
},
|
|
"lastAttemptedRevision": {
|
|
"description": "LastAttemptedRevision is the revision of the last reconciliation attempt.",
|
|
"type": "string"
|
|
},
|
|
"lastHandledReconcileAt": {
|
|
"description": "LastHandledReconcileAt holds the value of the most recent\nreconcile request value, so a change of the annotation value\ncan be detected.",
|
|
"type": "string"
|
|
},
|
|
"observedGeneration": {
|
|
"description": "ObservedGeneration is the last reconciled generation.",
|
|
"format": "int64",
|
|
"type": "integer"
|
|
},
|
|
"snapshot": {
|
|
"description": "The last successfully applied revision metadata.",
|
|
"properties": {
|
|
"checksum": {
|
|
"description": "The manifests sha1 checksum.",
|
|
"type": "string"
|
|
},
|
|
"entries": {
|
|
"description": "A list of Kubernetes kinds grouped by namespace.",
|
|
"items": {
|
|
"description": "Snapshot holds the metadata of namespaced\nKubernetes objects",
|
|
"properties": {
|
|
"kinds": {
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "The list of Kubernetes kinds.",
|
|
"type": "object"
|
|
},
|
|
"namespace": {
|
|
"description": "The namespace of this entry.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"kinds"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"checksum",
|
|
"entries"
|
|
],
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"type": "object",
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"type": "object"
|
|
} |