diff --git a/go.mod b/go.mod
index 0a6e5f72dc..d4da3c2de9 100644
--- a/go.mod
+++ b/go.mod
@@ -19,7 +19,7 @@ require (
github.com/onsi/ginkgo/v2 v2.23.4
github.com/onsi/gomega v1.37.0
github.com/openshift-eng/openshift-tests-extension v0.0.0-20250711173707-dc2a20e5a5f8
- github.com/openshift/api v0.0.0-20250901120840-a638ff2e96fb
+ github.com/openshift/api v0.0.0-20251009093019-7837a801e8c1
github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20250718085303-e712b1ebf374
github.com/openshift/cluster-control-plane-machine-set-operator v0.0.0-20250424110138-1dbf0c7a5d51
diff --git a/go.sum b/go.sum
index e3944b9e77..474d987bb3 100644
--- a/go.sum
+++ b/go.sum
@@ -457,8 +457,8 @@ github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jD
github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
github.com/openshift-eng/openshift-tests-extension v0.0.0-20250711173707-dc2a20e5a5f8 h1:D+Qga9nujuIcrAjcAuKPukoUcVBl6ZDEbtgNLgKKlgY=
github.com/openshift-eng/openshift-tests-extension v0.0.0-20250711173707-dc2a20e5a5f8/go.mod h1:6gkP5f2HL0meusT0Aim8icAspcD1cG055xxBZ9yC68M=
-github.com/openshift/api v0.0.0-20250901120840-a638ff2e96fb h1:L5A3091VKSyOJb0nJto/pQyyHueoaW+4sXLO5fHrTBE=
-github.com/openshift/api v0.0.0-20250901120840-a638ff2e96fb/go.mod h1:SPLf21TYPipzCO67BURkCfK6dcIIxx0oNRVWaOyRcXM=
+github.com/openshift/api v0.0.0-20251009093019-7837a801e8c1 h1:YDyN6zwe8H/bdYAp3kQekpjknSAGK4CjKOfYtk3261M=
+github.com/openshift/api v0.0.0-20251009093019-7837a801e8c1/go.mod h1:SPLf21TYPipzCO67BURkCfK6dcIIxx0oNRVWaOyRcXM=
github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee h1:tOtrrxfDEW8hK3eEsHqxsXurq/D6LcINGfprkQC3hqY=
github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee/go.mod h1:zhRiYyNMk89llof2qEuGPWPD+joQPhCRUc2IK0SB510=
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20250718085303-e712b1ebf374 h1:ldUi0e64kdYJC2+ucB24GRXIXfMnI3NpSkcnalPqBGo=
diff --git a/pkg/webhooks/machine_webhook.go b/pkg/webhooks/machine_webhook.go
index 4b04ed2834..3b5d491c99 100644
--- a/pkg/webhooks/machine_webhook.go
+++ b/pkg/webhooks/machine_webhook.go
@@ -868,6 +868,35 @@ func validateAWS(m *machinev1beta1.Machine, config *admissionConfig) (bool, []st
)
}
+ if providerSpec.CPUOptions != nil {
+ if *providerSpec.CPUOptions == (machinev1beta1.CPUOptions{}) {
+ errs = append(
+ errs,
+ field.Invalid(
+ field.NewPath("providerSpec", "CPUOptions"),
+ "{}",
+ "At least one field must be set if cpuOptions is provided",
+ ),
+ )
+ }
+
+ if providerSpec.CPUOptions.ConfidentialCompute != nil {
+ switch *providerSpec.CPUOptions.ConfidentialCompute {
+ case machinev1beta1.AWSConfidentialComputePolicyDisabled, machinev1beta1.AWSConfidentialComputePolicySEVSNP:
+ // Valid values
+ default:
+ errs = append(
+ errs,
+ field.Invalid(
+ field.NewPath("providerSpec", "CPUOptions", "ConfidentialCompute"),
+ providerSpec.CPUOptions.ConfidentialCompute,
+ fmt.Sprintf("Allowed values are %s, %s and omitted", machinev1beta1.AWSConfidentialComputePolicyDisabled, machinev1beta1.AWSConfidentialComputePolicySEVSNP),
+ ),
+ )
+ }
+ }
+ }
+
if len(errs) > 0 {
return false, warnings, errs
}
diff --git a/pkg/webhooks/machine_webhook_test.go b/pkg/webhooks/machine_webhook_test.go
index 4a4b444133..cd0a84ecc9 100644
--- a/pkg/webhooks/machine_webhook_test.go
+++ b/pkg/webhooks/machine_webhook_test.go
@@ -2610,6 +2610,52 @@ func TestValidateAWSProviderSpec(t *testing.T) {
expectedOk: false,
expectedError: "providerSpec.metadataServiceOptions.authentication: Invalid value: \"Boom\": Allowed values are either 'Optional' or 'Required'",
},
+ {
+ testCase: "with cpuOptions empty",
+ modifySpec: func(p *machinev1beta1.AWSMachineProviderConfig) {
+ p.CPUOptions = &machinev1beta1.CPUOptions{}
+ },
+ expectedOk: false,
+ expectedError: "providerSpec.CPUOptions: Invalid value: \"{}\": At least one field must be set if cpuOptions is provided",
+ },
+ {
+ testCase: "with confidentialCompute set to AMD SEV-SNP",
+ modifySpec: func(p *machinev1beta1.AWSMachineProviderConfig) {
+ p.CPUOptions = &machinev1beta1.CPUOptions{
+ ConfidentialCompute: ptr.To(machinev1beta1.AWSConfidentialComputePolicySEVSNP),
+ }
+ },
+ expectedOk: true,
+ },
+ {
+ testCase: "with confidentialCompute disabled",
+ modifySpec: func(p *machinev1beta1.AWSMachineProviderConfig) {
+ p.CPUOptions = &machinev1beta1.CPUOptions{
+ ConfidentialCompute: ptr.To(machinev1beta1.AWSConfidentialComputePolicyDisabled),
+ }
+ },
+ expectedOk: true,
+ },
+ {
+ testCase: "with confidentialCompute set to invalid value",
+ modifySpec: func(p *machinev1beta1.AWSMachineProviderConfig) {
+ p.CPUOptions = &machinev1beta1.CPUOptions{
+ ConfidentialCompute: ptr.To(machinev1beta1.AWSConfidentialComputePolicy("invalid")),
+ }
+ },
+ expectedOk: false,
+ expectedError: "providerSpec.CPUOptions.ConfidentialCompute: Invalid value: \"invalid\": Allowed values are Disabled, AMDEncryptedVirtualizationNestedPaging and omitted",
+ },
+ {
+ testCase: "with confidentialCompute empty",
+ modifySpec: func(p *machinev1beta1.AWSMachineProviderConfig) {
+ p.CPUOptions = &machinev1beta1.CPUOptions{
+ ConfidentialCompute: ptr.To(machinev1beta1.AWSConfidentialComputePolicy("")),
+ }
+ },
+ expectedOk: false,
+ expectedError: "providerSpec.CPUOptions.ConfidentialCompute: Invalid value: \"\": Allowed values are Disabled, AMDEncryptedVirtualizationNestedPaging and omitted",
+ },
{
testCase: "with invalid GroupVersionKind",
modifySpec: func(p *machinev1beta1.AWSMachineProviderConfig) {
diff --git a/vendor/github.com/openshift/api/.ci-operator.yaml b/vendor/github.com/openshift/api/.ci-operator.yaml
index 461415cbc5..e307e5af66 100644
--- a/vendor/github.com/openshift/api/.ci-operator.yaml
+++ b/vendor/github.com/openshift/api/.ci-operator.yaml
@@ -1,4 +1,4 @@
build_root_image:
name: release
namespace: openshift
- tag: rhel-9-release-golang-1.24-openshift-4.20
+ tag: rhel-9-release-golang-1.24-openshift-4.21
diff --git a/vendor/github.com/openshift/api/Dockerfile.ocp b/vendor/github.com/openshift/api/Dockerfile.ocp
index 0a4c98c488..45d24f4fcc 100644
--- a/vendor/github.com/openshift/api/Dockerfile.ocp
+++ b/vendor/github.com/openshift/api/Dockerfile.ocp
@@ -1,10 +1,10 @@
-FROM registry.ci.openshift.org/ocp/builder:rhel-9-golang-1.24-openshift-4.20 AS builder
+FROM registry.ci.openshift.org/ocp/builder:rhel-9-golang-1.24-openshift-4.21 AS builder
WORKDIR /go/src/github.com/openshift/api
COPY . .
ENV GO_PACKAGE github.com/openshift/api
RUN make build --warn-undefined-variables
-FROM registry.ci.openshift.org/ocp/4.20:base-rhel9
+FROM registry.ci.openshift.org/ocp/4.21:base-rhel9
# copy the built binaries to /usr/bin
COPY --from=builder /go/src/github.com/openshift/api/render /usr/bin/
diff --git a/vendor/github.com/openshift/api/Makefile b/vendor/github.com/openshift/api/Makefile
index 123efe1029..fd4268a789 100644
--- a/vendor/github.com/openshift/api/Makefile
+++ b/vendor/github.com/openshift/api/Makefile
@@ -73,7 +73,7 @@ verify-scripts:
hack/verify-payload-featuregates.sh
.PHONY: verify
-verify: verify-scripts lint verify-crd-schema verify-codegen-crds
+verify: verify-scripts lint verify-crd-schema verify-crdify verify-codegen-crds
.PHONY: verify-codegen-crds
verify-codegen-crds:
@@ -83,6 +83,10 @@ verify-codegen-crds:
verify-crd-schema:
bash -x hack/verify-crd-schema-checker.sh
+.PHONY: verify-crdify
+verify-crdify:
+ bash -x hack/verify-crdify.sh
+
.PHONY: verify-feature-promotion
verify-feature-promotion:
hack/verify-promoted-features-pass-tests.sh
diff --git a/vendor/github.com/openshift/api/config/v1/types_apiserver.go b/vendor/github.com/openshift/api/config/v1/types_apiserver.go
index e1a98cb267..0afe7b1d8d 100644
--- a/vendor/github.com/openshift/api/config/v1/types_apiserver.go
+++ b/vendor/github.com/openshift/api/config/v1/types_apiserver.go
@@ -58,9 +58,8 @@ type APIServerSpec struct {
Encryption APIServerEncryption `json:"encryption"`
// tlsSecurityProfile specifies settings for TLS connections for externally exposed servers.
//
- // If unset, a default (which may change between releases) is chosen. Note that only Old,
- // Intermediate and Custom profiles are currently supported, and the maximum available
- // minTLSVersion is VersionTLS12.
+ // When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time.
+ // The current default is the Intermediate profile.
// +optional
TLSSecurityProfile *TLSSecurityProfile `json:"tlsSecurityProfile,omitempty"`
// audit specifies the settings for audit configuration to be applied to all OpenShift-provided
diff --git a/vendor/github.com/openshift/api/config/v1/types_cluster_operator.go b/vendor/github.com/openshift/api/config/v1/types_cluster_operator.go
index a447adb9f4..8323040389 100644
--- a/vendor/github.com/openshift/api/config/v1/types_cluster_operator.go
+++ b/vendor/github.com/openshift/api/config/v1/types_cluster_operator.go
@@ -9,10 +9,9 @@ import (
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// ClusterOperator is the Custom Resource object which holds the current state
-// of an operator. This object is used by operators to convey their state to
-// the rest of the cluster.
-//
+// ClusterOperator holds the status of a core or optional OpenShift component
+// managed by the Cluster Version Operator (CVO). This object is used by
+// operators to convey their state to the rest of the cluster.
// Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
// +openshift:compatibility-gen:level=1
// +openshift:api-approved.openshift.io=https://github.com/openshift/api/pull/497
@@ -154,15 +153,21 @@ const (
// is functional and available in the cluster. Available=False means at least
// part of the component is non-functional, and that the condition requires
// immediate administrator intervention.
+ // A component must not report Available=False during the course of a normal upgrade.
OperatorAvailable ClusterStatusConditionType = "Available"
// Progressing indicates that the component (operator and all configured operands)
- // is actively rolling out new code, propagating config changes, or otherwise
+ // is actively rolling out new code, propagating config changes (e.g, a version change), or otherwise
// moving from one steady state to another. Operators should not report
- // progressing when they are reconciling (without action) a previously known
- // state. If the observed cluster state has changed and the component is
- // reacting to it (scaling up for instance), Progressing should become true
+ // Progressing when they are reconciling (without action) a previously known
+ // state. Operators should not report Progressing only because DaemonSets owned by them
+ // are adjusting to a new node from cluster scaleup or a node rebooting from cluster upgrade.
+ // If the observed cluster state has changed and the component is
+ // reacting to it (updated proxy configuration for instance), Progressing should become true
// since it is moving from one steady state to another.
+ // A component in a cluster with less than 250 nodes must complete a version
+ // change within a limited period of time: 90 minutes for Machine Config Operator and 20 minutes for others.
+ // Machine Config Operator is given more time as it needs to restart control plane nodes.
OperatorProgressing ClusterStatusConditionType = "Progressing"
// Degraded indicates that the component (operator and all configured operands)
@@ -175,7 +180,7 @@ const (
// Degraded because it may have a lower quality of service. A component may be
// Progressing but not Degraded because the transition from one state to
// another does not persist over a long enough period to report Degraded. A
- // component should not report Degraded during the course of a normal upgrade.
+ // component must not report Degraded during the course of a normal upgrade.
// A component may report Degraded in response to a persistent infrastructure
// failure that requires eventual administrator intervention. For example, if
// a control plane host is unhealthy and must be replaced. A component should
diff --git a/vendor/github.com/openshift/api/config/v1/types_cluster_version.go b/vendor/github.com/openshift/api/config/v1/types_cluster_version.go
index 54e1de94ce..cfac9689e4 100644
--- a/vendor/github.com/openshift/api/config/v1/types_cluster_version.go
+++ b/vendor/github.com/openshift/api/config/v1/types_cluster_version.go
@@ -257,7 +257,7 @@ type UpdateHistory struct {
// acceptedRisks records risks which were accepted to initiate the update.
// For example, it may menition an Upgradeable=False or missing signature
- // that was overriden via desiredUpdate.force, or an update that was
+ // that was overridden via desiredUpdate.force, or an update that was
// initiated despite not being in the availableUpdates set of recommended
// update targets.
// +optional
diff --git a/vendor/github.com/openshift/api/config/v1/types_infrastructure.go b/vendor/github.com/openshift/api/config/v1/types_infrastructure.go
index 4d911877e8..effafde644 100644
--- a/vendor/github.com/openshift/api/config/v1/types_infrastructure.go
+++ b/vendor/github.com/openshift/api/config/v1/types_infrastructure.go
@@ -1737,7 +1737,7 @@ type IBMCloudPlatformSpec struct {
// serviceEndpoints is a list of custom endpoints which will override the default
// service endpoints of an IBM service. These endpoints are used by components
// within the cluster when trying to reach the IBM Cloud Services that have been
- // overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
+ // overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
// endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus
// are updated to reflect the same custom endpoints.
// A maximum of 13 service endpoints overrides are supported.
@@ -1771,7 +1771,7 @@ type IBMCloudPlatformStatus struct {
// serviceEndpoints is a list of custom endpoints which will override the default
// service endpoints of an IBM service. These endpoints are used by components
// within the cluster when trying to reach the IBM Cloud Services that have been
- // overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
+ // overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
// endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus
// are updated to reflect the same custom endpoints.
// +openshift:validation:FeatureGateAwareMaxItems:featureGate=DyanmicServiceEndpointIBMCloud,maxItems=13
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusteroperators.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusteroperators.crd.yaml
index 7ab62874a1..7bb5defcbd 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusteroperators.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusteroperators.crd.yaml
@@ -42,10 +42,9 @@ spec:
schema:
openAPIV3Schema:
description: |-
- ClusterOperator is the Custom Resource object which holds the current state
- of an operator. This object is used by operators to convey their state to
- the rest of the cluster.
-
+ ClusterOperator holds the status of a core or optional OpenShift component
+ managed by the Cluster Version Operator (CVO). This object is used by
+ operators to convey their state to the rest of the cluster.
Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
properties:
apiVersion:
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-CustomNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-CustomNoUpgrade.crd.yaml
index 087b62dda1..fe8e41c086 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-CustomNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-CustomNoUpgrade.crd.yaml
@@ -748,7 +748,7 @@ spec:
description: |-
acceptedRisks records risks which were accepted to initiate the update.
For example, it may menition an Upgradeable=False or missing signature
- that was overriden via desiredUpdate.force, or an update that was
+ that was overridden via desiredUpdate.force, or an update that was
initiated despite not being in the availableUpdates set of recommended
update targets.
type: string
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-Default.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-Default.crd.yaml
index f93da1e2e2..1b2662e080 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-Default.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-Default.crd.yaml
@@ -664,7 +664,7 @@ spec:
description: |-
acceptedRisks records risks which were accepted to initiate the update.
For example, it may menition an Upgradeable=False or missing signature
- that was overriden via desiredUpdate.force, or an update that was
+ that was overridden via desiredUpdate.force, or an update that was
initiated despite not being in the availableUpdates set of recommended
update targets.
type: string
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-DevPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-DevPreviewNoUpgrade.crd.yaml
index 300d94a714..3d0a05471b 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-DevPreviewNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-DevPreviewNoUpgrade.crd.yaml
@@ -748,7 +748,7 @@ spec:
description: |-
acceptedRisks records risks which were accepted to initiate the update.
For example, it may menition an Upgradeable=False or missing signature
- that was overriden via desiredUpdate.force, or an update that was
+ that was overridden via desiredUpdate.force, or an update that was
initiated despite not being in the availableUpdates set of recommended
update targets.
type: string
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-TechPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-TechPreviewNoUpgrade.crd.yaml
index 6fc2cb0d94..1e0f08de8c 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-TechPreviewNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_00_cluster-version-operator_01_clusterversions-TechPreviewNoUpgrade.crd.yaml
@@ -748,7 +748,7 @@ spec:
description: |-
acceptedRisks records risks which were accepted to initiate the update.
For example, it may menition an Upgradeable=False or missing signature
- that was overriden via desiredUpdate.force, or an update that was
+ that was overridden via desiredUpdate.force, or an update that was
initiated despite not being in the availableUpdates set of recommended
update targets.
type: string
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-CustomNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-CustomNoUpgrade.crd.yaml
index b10b46c6fb..f4416bf9b3 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-CustomNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-CustomNoUpgrade.crd.yaml
@@ -296,9 +296,8 @@ spec:
description: |-
tlsSecurityProfile specifies settings for TLS connections for externally exposed servers.
- If unset, a default (which may change between releases) is chosen. Note that only Old,
- Intermediate and Custom profiles are currently supported, and the maximum available
- minTLSVersion is VersionTLS12.
+ When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time.
+ The current default is the Intermediate profile.
properties:
custom:
description: |-
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-Default.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-Default.crd.yaml
index 44dc2924aa..37662cb58d 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-Default.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-Default.crd.yaml
@@ -227,9 +227,8 @@ spec:
description: |-
tlsSecurityProfile specifies settings for TLS connections for externally exposed servers.
- If unset, a default (which may change between releases) is chosen. Note that only Old,
- Intermediate and Custom profiles are currently supported, and the maximum available
- minTLSVersion is VersionTLS12.
+ When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time.
+ The current default is the Intermediate profile.
properties:
custom:
description: |-
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-DevPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-DevPreviewNoUpgrade.crd.yaml
index 843984380b..bfeefa11f3 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-DevPreviewNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-DevPreviewNoUpgrade.crd.yaml
@@ -296,9 +296,8 @@ spec:
description: |-
tlsSecurityProfile specifies settings for TLS connections for externally exposed servers.
- If unset, a default (which may change between releases) is chosen. Note that only Old,
- Intermediate and Custom profiles are currently supported, and the maximum available
- minTLSVersion is VersionTLS12.
+ When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time.
+ The current default is the Intermediate profile.
properties:
custom:
description: |-
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-TechPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-TechPreviewNoUpgrade.crd.yaml
index 808e11aac3..a49976e0df 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-TechPreviewNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_apiservers-TechPreviewNoUpgrade.crd.yaml
@@ -296,9 +296,8 @@ spec:
description: |-
tlsSecurityProfile specifies settings for TLS connections for externally exposed servers.
- If unset, a default (which may change between releases) is chosen. Note that only Old,
- Intermediate and Custom profiles are currently supported, and the maximum available
- minTLSVersion is VersionTLS12.
+ When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time.
+ The current default is the Intermediate profile.
properties:
custom:
description: |-
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-CustomNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-CustomNoUpgrade.crd.yaml
deleted file mode 100644
index 4f67bf9e0c..0000000000
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-CustomNoUpgrade.crd.yaml
+++ /dev/null
@@ -1,870 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- api-approved.openshift.io: https://github.com/openshift/api/pull/470
- api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
- release.openshift.io/bootstrap-required: "true"
- release.openshift.io/feature-set: CustomNoUpgrade
- name: authentications.config.openshift.io
-spec:
- group: config.openshift.io
- names:
- kind: Authentication
- listKind: AuthenticationList
- plural: authentications
- singular: authentication
- scope: Cluster
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: |-
- Authentication specifies cluster-wide settings for authentication (like OAuth and
- webhook token authenticators). The canonical name of an instance is `cluster`.
-
- Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
- properties:
- apiVersion:
- description: |-
- APIVersion defines the versioned schema of this representation of an object.
- Servers should convert recognized schemas to the latest internal value, and
- may reject unrecognized values.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- type: string
- kind:
- description: |-
- Kind is a string value representing the REST resource this object represents.
- Servers may infer this from the endpoint the client submits requests to.
- Cannot be updated.
- In CamelCase.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- type: string
- metadata:
- type: object
- spec:
- description: spec holds user settable values for configuration
- properties:
- oauthMetadata:
- description: |-
- oauthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for an external OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- If oauthMetadata.name is non-empty, this value has precedence
- over any metadata reference stored in status.
- The key "oauthMetadata" is used to locate the data.
- If specified and the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcProviders:
- description: |-
- oidcProviders are OIDC identity providers that can issue tokens
- for this cluster
- Can only be set if "Type" is set to "OIDC".
-
- At most one provider can be configured.
- items:
- properties:
- claimMappings:
- description: |-
- claimMappings is a required field that configures the rules to be used by
- the Kubernetes API server for translating claims in a JWT token, issued
- by the identity provider, to a cluster identity.
- properties:
- extra:
- description: |-
- extra is an optional field for configuring the mappings
- used to construct the extra attribute for the cluster identity.
- When omitted, no extra attributes will be present on the cluster identity.
- key values for extra mappings must be unique.
- A maximum of 32 extra attribute mappings may be provided.
- items:
- description: |-
- ExtraMapping allows specifying a key and CEL expression
- to evaluate the keys' value. It is used to create additional
- mappings and attributes added to a cluster identity from
- a provided authentication token.
- properties:
- key:
- description: |-
- key is a required field that specifies the string
- to use as the extra attribute key.
-
- key must be a domain-prefix path (e.g 'example.org/foo').
- key must not exceed 510 characters in length.
- key must contain the '/' character, separating the domain and path characters.
- key must not be empty.
-
- The domain portion of the key (string of characters prior to the '/') must be a valid RFC1123 subdomain.
- It must not exceed 253 characters in length.
- It must start and end with an alphanumeric character.
- It must only contain lower case alphanumeric characters and '-' or '.'.
- It must not use the reserved domains, or be subdomains of, "kubernetes.io", "k8s.io", and "openshift.io".
-
- The path portion of the key (string of characters after the '/') must not be empty and must consist of at least one
- alphanumeric character, percent-encoded octets, '-', '.', '_', '~', '!', '$', '&', ''', '(', ')', '*', '+', ',', ';', '=', and ':'.
- It must not exceed 256 characters in length.
- maxLength: 510
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: key must contain the '/' character
- rule: self.contains('/')
- - message: the domain of the key must consist of only
- lower case alphanumeric characters, '-' or '.',
- and must start and end with an alphanumeric character
- rule: self.split('/', 2)[0].matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- - message: the domain of the key must not exceed 253
- characters in length
- rule: self.split('/', 2)[0].size() <= 253
- - message: the domain 'kubernetes.io' is reserved
- for Kubernetes use
- rule: self.split('/', 2)[0] != 'kubernetes.io'
- - message: the subdomains '*.kubernetes.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.kubernetes.io'')'
- - message: the domain 'k8s.io' is reserved for Kubernetes
- use
- rule: self.split('/', 2)[0] != 'k8s.io'
- - message: the subdomains '*.k8s.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.k8s.io'')'
- - message: the domain 'openshift.io' is reserved for
- OpenShift use
- rule: self.split('/', 2)[0] != 'openshift.io'
- - message: the subdomains '*.openshift.io' are reserved
- for OpenShift use
- rule: '!self.split(''/'', 2)[0].endsWith(''.openshift.io'')'
- - message: the path of the key must not be empty and
- must consist of at least one alphanumeric character,
- percent-encoded octets, apostrophe, '-', '.',
- '_', '~', '!', '$', '&', '(', ')', '*', '+', ',',
- ';', '=', and ':'
- rule: self.split('/', 2)[1].matches('[A-Za-z0-9/\\-._~%!$&\'()*+;=:]+')
- - message: the path of the key must not exceed 256
- characters in length
- rule: self.split('/', 2)[1].size() <= 256
- valueExpression:
- description: |-
- valueExpression is a required field to specify the CEL expression to extract
- the extra attribute value from a JWT token's claims.
- valueExpression must produce a string or string array value.
- "", [], and null are treated as the extra mapping not being present.
- Empty string values within an array are filtered out.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- valueExpression must not exceed 1024 characters in length.
- valueExpression must not be empty.
- maxLength: 1024
- minLength: 1
- type: string
- required:
- - key
- - valueExpression
- type: object
- maxItems: 32
- type: array
- x-kubernetes-list-map-keys:
- - key
- x-kubernetes-list-type: map
- groups:
- description: |-
- groups is an optional field that configures how the groups of a cluster identity
- should be constructed from the claims in a JWT token issued
- by the identity provider.
- When referencing a claim, if the claim is present in the JWT
- token, its value must be a list of groups separated by a comma (',').
- For example - '"example"' and '"exampleOne", "exampleTwo", "exampleThree"' are valid claim values.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
- type: string
- prefix:
- description: |-
- prefix is an optional field that configures the prefix that will be
- applied to the cluster identity attribute during the process of mapping
- JWT claims to cluster identity attributes.
-
- When omitted (""), no prefix is applied to the cluster identity attribute.
-
- Example: if `prefix` is set to "myoidc:" and the `claim` in JWT contains
- an array of strings "a", "b" and "c", the mapping will result in an
- array of string "myoidc:a", "myoidc:b" and "myoidc:c".
- type: string
- required:
- - claim
- type: object
- uid:
- description: |-
- uid is an optional field for configuring the claim mapping
- used to construct the uid for the cluster identity.
-
- When using uid.claim to specify the claim it must be a single string value.
- When using uid.expression the expression must result in a single string value.
-
- When omitted, this means the user has no opinion and the platform
- is left to choose a default, which is subject to change over time.
- The current default is to use the 'sub' claim.
- properties:
- claim:
- description: |-
- claim is an optional field for specifying the
- JWT token claim that is used in the mapping.
- The value of this claim will be assigned to
- the field in which this mapping is associated.
-
- Precisely one of claim or expression must be set.
- claim must not be specified when expression is set.
- When specified, claim must be at least 1 character in length
- and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- expression:
- description: |-
- expression is an optional field for specifying a
- CEL expression that produces a string value from
- JWT token claims.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- Precisely one of claim or expression must be set.
- expression must not be specified when claim is set.
- When specified, expression must be at least 1 character in length
- and must not exceed 1024 characters in length.
- maxLength: 1024
- minLength: 1
- type: string
- type: object
- x-kubernetes-validations:
- - message: precisely one of claim or expression must be
- set
- rule: 'has(self.claim) ? !has(self.expression) : has(self.expression)'
- username:
- description: |-
- username is a required field that configures how the username of a cluster identity
- should be constructed from the claims in a JWT token issued by the identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
-
- claim must not be an empty string ("") and must not exceed 256 characters.
- maxLength: 256
- minLength: 1
- type: string
- prefix:
- description: |-
- prefix configures the prefix that should be prepended to the value
- of the JWT claim.
-
- prefix must be set when prefixPolicy is set to 'Prefix' and must be unset otherwise.
- properties:
- prefixString:
- description: |-
- prefixString is a required field that configures the prefix that will
- be applied to cluster identity username attribute
- during the process of mapping JWT claims to cluster identity attributes.
-
- prefixString must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - prefixString
- type: object
- prefixPolicy:
- description: |-
- prefixPolicy is an optional field that configures how a prefix should be
- applied to the value of the JWT claim specified in the 'claim' field.
-
- Allowed values are 'Prefix', 'NoPrefix', and omitted (not provided or an empty string).
-
- When set to 'Prefix', the value specified in the prefix field will be
- prepended to the value of the JWT claim.
- The prefix field must be set when prefixPolicy is 'Prefix'.
-
- When set to 'NoPrefix', no prefix will be prepended to the value
- of the JWT claim.
-
- When omitted, this means no opinion and the platform is left to choose
- any prefixes that are applied which is subject to change over time.
- Currently, the platform prepends `{issuerURL}#` to the value of the JWT claim
- when the claim is not 'email'.
- As an example, consider the following scenario:
- `prefix` is unset, `issuerURL` is set to `https://myoidc.tld`,
- the JWT claims include "username":"userA" and "email":"userA@myoidc.tld",
- and `claim` is set to:
- - "username": the mapped value will be "https://myoidc.tld#userA"
- - "email": the mapped value will be "userA@myoidc.tld"
- enum:
- - ""
- - NoPrefix
- - Prefix
- type: string
- required:
- - claim
- type: object
- x-kubernetes-validations:
- - message: prefix must be set if prefixPolicy is 'Prefix',
- but must remain unset otherwise
- rule: 'has(self.prefixPolicy) && self.prefixPolicy ==
- ''Prefix'' ? (has(self.prefix) && size(self.prefix.prefixString)
- > 0) : !has(self.prefix)'
- required:
- - username
- type: object
- claimValidationRules:
- description: |-
- claimValidationRules is an optional field that configures the rules to
- be used by the Kubernetes API server for validating the claims in a JWT
- token issued by the identity provider.
-
- Validation rules are joined via an AND operation.
- items:
- properties:
- requiredClaim:
- description: |-
- requiredClaim is an optional field that configures the required claim
- and value that the Kubernetes API server will use to validate if an incoming
- JWT is valid for this identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the name of the required claim.
- When taken from the JWT claims, claim must be a string value.
-
- claim must not be an empty string ("").
- minLength: 1
- type: string
- requiredValue:
- description: |-
- requiredValue is a required field that configures the value that 'claim' must
- have when taken from the incoming JWT claims.
- If the value in the JWT claims does not match, the token
- will be rejected for authentication.
-
- requiredValue must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - claim
- - requiredValue
- type: object
- type:
- default: RequiredClaim
- description: |-
- type is an optional field that configures the type of the validation rule.
-
- Allowed values are 'RequiredClaim' and omitted (not provided or an empty string).
-
- When set to 'RequiredClaim', the Kubernetes API server
- will be configured to validate that the incoming JWT
- contains the required claim and that its value matches
- the required value.
-
- Defaults to 'RequiredClaim'.
- enum:
- - RequiredClaim
- type: string
- type: object
- type: array
- x-kubernetes-list-type: atomic
- issuer:
- description: |-
- issuer is a required field that configures how the platform interacts
- with the identity provider and how tokens issued from the identity provider
- are evaluated by the Kubernetes API server.
- properties:
- audiences:
- description: |-
- audiences is a required field that configures the acceptable audiences
- the JWT token, issued by the identity provider, must be issued to.
- At least one of the entries must match the 'aud' claim in the JWT token.
-
- audiences must contain at least one entry and must not exceed ten entries.
- items:
- minLength: 1
- type: string
- maxItems: 10
- minItems: 1
- type: array
- x-kubernetes-list-type: set
- issuerCertificateAuthority:
- description: |-
- issuerCertificateAuthority is an optional field that configures the
- certificate authority, used by the Kubernetes API server, to validate
- the connection to the identity provider when fetching discovery information.
-
- When not specified, the system trust is used.
-
- When specified, it must reference a ConfigMap in the openshift-config
- namespace containing the PEM-encoded CA certificates under the 'ca-bundle.crt'
- key in the data field of the ConfigMap.
- properties:
- name:
- description: name is the metadata.name of the referenced
- config map
- type: string
- required:
- - name
- type: object
- issuerURL:
- description: |-
- issuerURL is a required field that configures the URL used to issue tokens
- by the identity provider.
- The Kubernetes API server determines how authentication tokens should be handled
- by matching the 'iss' claim in the JWT to the issuerURL of configured identity providers.
-
- Must be at least 1 character and must not exceed 512 characters in length.
- Must be a valid URL that uses the 'https' scheme and does not contain a query, fragment or user.
- maxLength: 512
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must be a valid URL
- rule: isURL(self)
- - message: must use the 'https' scheme
- rule: isURL(self) && url(self).getScheme() == 'https'
- - message: must not have a query
- rule: isURL(self) && url(self).getQuery() == {}
- - message: must not have a fragment
- rule: self.find('#(.+)$') == ''
- - message: must not have user info
- rule: self.find('@') == ''
- required:
- - audiences
- - issuerURL
- type: object
- name:
- description: |-
- name is a required field that configures the unique human-readable identifier
- associated with the identity provider.
- It is used to distinguish between multiple identity providers
- and has no impact on token validation or authentication mechanics.
-
- name must not be an empty string ("").
- minLength: 1
- type: string
- oidcClients:
- description: |-
- oidcClients is an optional field that configures how on-cluster,
- platform clients should request tokens from the identity provider.
- oidcClients must not exceed 20 entries and entries must have unique namespace/name pairs.
- items:
- description: |-
- OIDCClientConfig configures how platform clients
- interact with identity providers as an authentication
- method
- properties:
- clientID:
- description: |-
- clientID is a required field that configures the client identifier, from
- the identity provider, that the platform component uses for authentication
- requests made to the identity provider.
- The identity provider must accept this identifier for platform components
- to be able to use the identity provider as an authentication mode.
-
- clientID must not be an empty string ("").
- minLength: 1
- type: string
- clientSecret:
- description: |-
- clientSecret is an optional field that configures the client secret used
- by the platform component when making authentication requests to the identity provider.
-
- When not specified, no client secret will be used when making authentication requests
- to the identity provider.
-
- When specified, clientSecret references a Secret in the 'openshift-config'
- namespace that contains the client secret in the 'clientSecret' key of the '.data' field.
- The client secret will be used when making authentication requests to the identity provider.
-
- Public clients do not require a client secret but private
- clients do require a client secret to work with the identity provider.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component being configured to use the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component being configured to use the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- extraScopes:
- description: |-
- extraScopes is an optional field that configures the extra scopes that should
- be requested by the platform component when making authentication requests to the
- identity provider.
- This is useful if you have configured claim mappings that requires specific
- scopes to be requested beyond the standard OIDC scopes.
-
- When omitted, no additional scopes are requested.
- items:
- type: string
- type: array
- x-kubernetes-list-type: set
- required:
- - clientID
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- required:
- - claimMappings
- - issuer
- - name
- type: object
- maxItems: 1
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- serviceAccountIssuer:
- description: |-
- serviceAccountIssuer is the identifier of the bound service account token
- issuer.
- The default is https://kubernetes.default.svc
- WARNING: Updating this field will not result in immediate invalidation of all bound tokens with the
- previous issuer value. Instead, the tokens issued by previous service account issuer will continue to
- be trusted for a time period chosen by the platform (currently set to 24h).
- This time period is subject to change over time.
- This allows internal components to transition to use new service account issuer without service distruption.
- type: string
- type:
- description: |-
- type identifies the cluster managed, user facing authentication mode in use.
- Specifically, it manages the component that responds to login attempts.
- The default is IntegratedOAuth.
- enum:
- - ""
- - None
- - IntegratedOAuth
- - OIDC
- type: string
- webhookTokenAuthenticator:
- description: |-
- webhookTokenAuthenticator configures a remote token reviewer.
- These remote authentication webhooks can be used to verify bearer tokens
- via the tokenreviews.authentication.k8s.io REST API. This is required to
- honor bearer tokens that are provisioned by an external authentication service.
-
- Can only be set if "Type" is set to "None".
- properties:
- kubeConfig:
- description: |-
- kubeConfig references a secret that contains kube config file data which
- describes how to access the remote webhook service.
- The namespace for the referenced secret is openshift-config.
-
- For further details, see:
-
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
-
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- properties:
- name:
- description: name is the metadata.name of the referenced secret
- type: string
- required:
- - name
- type: object
- required:
- - kubeConfig
- type: object
- webhookTokenAuthenticators:
- description: webhookTokenAuthenticators is DEPRECATED, setting it
- has no effect.
- items:
- description: |-
- deprecatedWebhookTokenAuthenticator holds the necessary configuration options for a remote token authenticator.
- It's the same as WebhookTokenAuthenticator but it's missing the 'required' validation on KubeConfig field.
- properties:
- kubeConfig:
- description: |-
- kubeConfig contains kube config file data which describes how to access the remote webhook service.
- For further details, see:
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- The namespace for this secret is determined by the point of use.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- type: object
- type: array
- x-kubernetes-list-type: atomic
- type: object
- status:
- description: status holds observed values from the cluster. They may not
- be overridden.
- properties:
- integratedOAuthMetadata:
- description: |-
- integratedOAuthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for the in-cluster integrated OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- This contains the observed value based on cluster state.
- An explicitly set value in spec.oauthMetadata has precedence over this field.
- This field has no meaning if authentication spec.type is not set to IntegratedOAuth.
- The key "oauthMetadata" is used to locate the data.
- If the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config-managed.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcClients:
- description: |-
- oidcClients is where participating operators place the current OIDC client status
- for OIDC clients that can be customized by the cluster-admin.
- items:
- description: |-
- OIDCClientStatus represents the current state
- of platform components and how they interact with
- the configured identity providers.
- properties:
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component using the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component using the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- conditions:
- description: |-
- conditions are used to communicate the state of the `oidcClients` entry.
-
- Supported conditions include Available, Degraded and Progressing.
-
- If Available is true, the component is successfully using the configured client.
- If Degraded is true, that means something has gone wrong trying to handle the client configuration.
- If Progressing is true, that means the component is taking some action related to the `oidcClients` entry.
- items:
- description: Condition contains details for one aspect of
- the current state of this API Resource.
- properties:
- lastTransitionTime:
- description: |-
- lastTransitionTime is the last time the condition transitioned from one status to another.
- This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: |-
- message is a human readable message indicating details about the transition.
- This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: |-
- observedGeneration represents the .metadata.generation that the condition was set based upon.
- For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
- with respect to the current state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: |-
- reason contains a programmatic identifier indicating the reason for the condition's last transition.
- Producers of specific condition types may define expected values and meanings for this field,
- and whether the values are considered a guaranteed API.
- The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False,
- Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - type
- x-kubernetes-list-type: map
- consumingUsers:
- description: |-
- consumingUsers is an optional list of ServiceAccounts requiring
- read permissions on the `clientSecret` secret.
-
- consumingUsers must not exceed 5 entries.
- items:
- description: ConsumingUser is an alias for string which we
- add validation to. Currently only service accounts are supported.
- maxLength: 512
- minLength: 1
- pattern: ^system:serviceaccount:[a-z0-9]([-a-z0-9]*[a-z0-9])?:[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- type: string
- maxItems: 5
- type: array
- x-kubernetes-list-type: set
- currentOIDCClients:
- description: |-
- currentOIDCClients is an optional list of clients that the component is currently using.
- Entries must have unique issuerURL/clientID pairs.
- items:
- description: |-
- OIDCClientReference is a reference to a platform component
- client configuration.
- properties:
- clientID:
- description: |-
- clientID is a required field that specifies the client identifier, from
- the identity provider, that the platform component is using for authentication
- requests made to the identity provider.
-
- clientID must not be empty.
- minLength: 1
- type: string
- issuerURL:
- description: |-
- issuerURL is a required field that specifies the URL of the identity
- provider that this client is configured to make requests against.
-
- issuerURL must use the 'https' scheme.
- pattern: ^https:\/\/[^\s]
- type: string
- oidcProviderName:
- description: |-
- oidcProviderName is a required reference to the 'name' of the identity provider
- configured in 'oidcProviders' that this client is associated with.
-
- oidcProviderName must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - clientID
- - issuerURL
- - oidcProviderName
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - issuerURL
- - clientID
- x-kubernetes-list-type: map
- required:
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- type: object
- required:
- - spec
- type: object
- x-kubernetes-validations:
- - message: all oidcClients in the oidcProviders must match their componentName
- and componentNamespace to either a previously configured oidcClient or
- they must exist in the status.oidcClients
- rule: '!has(self.spec.oidcProviders) || self.spec.oidcProviders.all(p, !has(p.oidcClients)
- || p.oidcClients.all(specC, self.status.oidcClients.exists(statusC, statusC.componentNamespace
- == specC.componentNamespace && statusC.componentName == specC.componentName)
- || (has(oldSelf.spec.oidcProviders) && oldSelf.spec.oidcProviders.exists(oldP,
- oldP.name == p.name && has(oldP.oidcClients) && oldP.oidcClients.exists(oldC,
- oldC.componentNamespace == specC.componentNamespace && oldC.componentName
- == specC.componentName)))))'
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-Default.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-Default.crd.yaml
deleted file mode 100644
index 2a3b60571c..0000000000
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-Default.crd.yaml
+++ /dev/null
@@ -1,719 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- api-approved.openshift.io: https://github.com/openshift/api/pull/470
- api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
- release.openshift.io/bootstrap-required: "true"
- release.openshift.io/feature-set: Default
- name: authentications.config.openshift.io
-spec:
- group: config.openshift.io
- names:
- kind: Authentication
- listKind: AuthenticationList
- plural: authentications
- singular: authentication
- scope: Cluster
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: |-
- Authentication specifies cluster-wide settings for authentication (like OAuth and
- webhook token authenticators). The canonical name of an instance is `cluster`.
-
- Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
- properties:
- apiVersion:
- description: |-
- APIVersion defines the versioned schema of this representation of an object.
- Servers should convert recognized schemas to the latest internal value, and
- may reject unrecognized values.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- type: string
- kind:
- description: |-
- Kind is a string value representing the REST resource this object represents.
- Servers may infer this from the endpoint the client submits requests to.
- Cannot be updated.
- In CamelCase.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- type: string
- metadata:
- type: object
- spec:
- description: spec holds user settable values for configuration
- properties:
- oauthMetadata:
- description: |-
- oauthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for an external OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- If oauthMetadata.name is non-empty, this value has precedence
- over any metadata reference stored in status.
- The key "oauthMetadata" is used to locate the data.
- If specified and the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcProviders:
- description: |-
- oidcProviders are OIDC identity providers that can issue tokens
- for this cluster
- Can only be set if "Type" is set to "OIDC".
-
- At most one provider can be configured.
- items:
- properties:
- claimMappings:
- description: |-
- claimMappings is a required field that configures the rules to be used by
- the Kubernetes API server for translating claims in a JWT token, issued
- by the identity provider, to a cluster identity.
- properties:
- groups:
- description: |-
- groups is an optional field that configures how the groups of a cluster identity
- should be constructed from the claims in a JWT token issued
- by the identity provider.
- When referencing a claim, if the claim is present in the JWT
- token, its value must be a list of groups separated by a comma (',').
- For example - '"example"' and '"exampleOne", "exampleTwo", "exampleThree"' are valid claim values.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
- type: string
- prefix:
- description: |-
- prefix is an optional field that configures the prefix that will be
- applied to the cluster identity attribute during the process of mapping
- JWT claims to cluster identity attributes.
-
- When omitted (""), no prefix is applied to the cluster identity attribute.
-
- Example: if `prefix` is set to "myoidc:" and the `claim` in JWT contains
- an array of strings "a", "b" and "c", the mapping will result in an
- array of string "myoidc:a", "myoidc:b" and "myoidc:c".
- type: string
- required:
- - claim
- type: object
- username:
- description: |-
- username is a required field that configures how the username of a cluster identity
- should be constructed from the claims in a JWT token issued by the identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
-
- claim must not be an empty string ("") and must not exceed 256 characters.
- maxLength: 256
- minLength: 1
- type: string
- prefix:
- description: |-
- prefix configures the prefix that should be prepended to the value
- of the JWT claim.
-
- prefix must be set when prefixPolicy is set to 'Prefix' and must be unset otherwise.
- properties:
- prefixString:
- description: |-
- prefixString is a required field that configures the prefix that will
- be applied to cluster identity username attribute
- during the process of mapping JWT claims to cluster identity attributes.
-
- prefixString must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - prefixString
- type: object
- prefixPolicy:
- description: |-
- prefixPolicy is an optional field that configures how a prefix should be
- applied to the value of the JWT claim specified in the 'claim' field.
-
- Allowed values are 'Prefix', 'NoPrefix', and omitted (not provided or an empty string).
-
- When set to 'Prefix', the value specified in the prefix field will be
- prepended to the value of the JWT claim.
- The prefix field must be set when prefixPolicy is 'Prefix'.
-
- When set to 'NoPrefix', no prefix will be prepended to the value
- of the JWT claim.
-
- When omitted, this means no opinion and the platform is left to choose
- any prefixes that are applied which is subject to change over time.
- Currently, the platform prepends `{issuerURL}#` to the value of the JWT claim
- when the claim is not 'email'.
- As an example, consider the following scenario:
- `prefix` is unset, `issuerURL` is set to `https://myoidc.tld`,
- the JWT claims include "username":"userA" and "email":"userA@myoidc.tld",
- and `claim` is set to:
- - "username": the mapped value will be "https://myoidc.tld#userA"
- - "email": the mapped value will be "userA@myoidc.tld"
- enum:
- - ""
- - NoPrefix
- - Prefix
- type: string
- required:
- - claim
- type: object
- x-kubernetes-validations:
- - message: prefix must be set if prefixPolicy is 'Prefix',
- but must remain unset otherwise
- rule: 'has(self.prefixPolicy) && self.prefixPolicy ==
- ''Prefix'' ? (has(self.prefix) && size(self.prefix.prefixString)
- > 0) : !has(self.prefix)'
- required:
- - username
- type: object
- claimValidationRules:
- description: |-
- claimValidationRules is an optional field that configures the rules to
- be used by the Kubernetes API server for validating the claims in a JWT
- token issued by the identity provider.
-
- Validation rules are joined via an AND operation.
- items:
- properties:
- requiredClaim:
- description: |-
- requiredClaim is an optional field that configures the required claim
- and value that the Kubernetes API server will use to validate if an incoming
- JWT is valid for this identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the name of the required claim.
- When taken from the JWT claims, claim must be a string value.
-
- claim must not be an empty string ("").
- minLength: 1
- type: string
- requiredValue:
- description: |-
- requiredValue is a required field that configures the value that 'claim' must
- have when taken from the incoming JWT claims.
- If the value in the JWT claims does not match, the token
- will be rejected for authentication.
-
- requiredValue must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - claim
- - requiredValue
- type: object
- type:
- default: RequiredClaim
- description: |-
- type is an optional field that configures the type of the validation rule.
-
- Allowed values are 'RequiredClaim' and omitted (not provided or an empty string).
-
- When set to 'RequiredClaim', the Kubernetes API server
- will be configured to validate that the incoming JWT
- contains the required claim and that its value matches
- the required value.
-
- Defaults to 'RequiredClaim'.
- enum:
- - RequiredClaim
- type: string
- type: object
- type: array
- x-kubernetes-list-type: atomic
- issuer:
- description: |-
- issuer is a required field that configures how the platform interacts
- with the identity provider and how tokens issued from the identity provider
- are evaluated by the Kubernetes API server.
- properties:
- audiences:
- description: |-
- audiences is a required field that configures the acceptable audiences
- the JWT token, issued by the identity provider, must be issued to.
- At least one of the entries must match the 'aud' claim in the JWT token.
-
- audiences must contain at least one entry and must not exceed ten entries.
- items:
- minLength: 1
- type: string
- maxItems: 10
- minItems: 1
- type: array
- x-kubernetes-list-type: set
- issuerCertificateAuthority:
- description: |-
- issuerCertificateAuthority is an optional field that configures the
- certificate authority, used by the Kubernetes API server, to validate
- the connection to the identity provider when fetching discovery information.
-
- When not specified, the system trust is used.
-
- When specified, it must reference a ConfigMap in the openshift-config
- namespace containing the PEM-encoded CA certificates under the 'ca-bundle.crt'
- key in the data field of the ConfigMap.
- properties:
- name:
- description: name is the metadata.name of the referenced
- config map
- type: string
- required:
- - name
- type: object
- issuerURL:
- description: |-
- issuerURL is a required field that configures the URL used to issue tokens
- by the identity provider.
- The Kubernetes API server determines how authentication tokens should be handled
- by matching the 'iss' claim in the JWT to the issuerURL of configured identity providers.
-
- Must be at least 1 character and must not exceed 512 characters in length.
- Must be a valid URL that uses the 'https' scheme and does not contain a query, fragment or user.
- maxLength: 512
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must be a valid URL
- rule: isURL(self)
- - message: must use the 'https' scheme
- rule: isURL(self) && url(self).getScheme() == 'https'
- - message: must not have a query
- rule: isURL(self) && url(self).getQuery() == {}
- - message: must not have a fragment
- rule: self.find('#(.+)$') == ''
- - message: must not have user info
- rule: self.find('@') == ''
- required:
- - audiences
- - issuerURL
- type: object
- name:
- description: |-
- name is a required field that configures the unique human-readable identifier
- associated with the identity provider.
- It is used to distinguish between multiple identity providers
- and has no impact on token validation or authentication mechanics.
-
- name must not be an empty string ("").
- minLength: 1
- type: string
- oidcClients:
- description: |-
- oidcClients is an optional field that configures how on-cluster,
- platform clients should request tokens from the identity provider.
- oidcClients must not exceed 20 entries and entries must have unique namespace/name pairs.
- items:
- description: |-
- OIDCClientConfig configures how platform clients
- interact with identity providers as an authentication
- method
- properties:
- clientID:
- description: |-
- clientID is a required field that configures the client identifier, from
- the identity provider, that the platform component uses for authentication
- requests made to the identity provider.
- The identity provider must accept this identifier for platform components
- to be able to use the identity provider as an authentication mode.
-
- clientID must not be an empty string ("").
- minLength: 1
- type: string
- clientSecret:
- description: |-
- clientSecret is an optional field that configures the client secret used
- by the platform component when making authentication requests to the identity provider.
-
- When not specified, no client secret will be used when making authentication requests
- to the identity provider.
-
- When specified, clientSecret references a Secret in the 'openshift-config'
- namespace that contains the client secret in the 'clientSecret' key of the '.data' field.
- The client secret will be used when making authentication requests to the identity provider.
-
- Public clients do not require a client secret but private
- clients do require a client secret to work with the identity provider.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component being configured to use the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component being configured to use the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- extraScopes:
- description: |-
- extraScopes is an optional field that configures the extra scopes that should
- be requested by the platform component when making authentication requests to the
- identity provider.
- This is useful if you have configured claim mappings that requires specific
- scopes to be requested beyond the standard OIDC scopes.
-
- When omitted, no additional scopes are requested.
- items:
- type: string
- type: array
- x-kubernetes-list-type: set
- required:
- - clientID
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- required:
- - claimMappings
- - issuer
- - name
- type: object
- maxItems: 1
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- serviceAccountIssuer:
- description: |-
- serviceAccountIssuer is the identifier of the bound service account token
- issuer.
- The default is https://kubernetes.default.svc
- WARNING: Updating this field will not result in immediate invalidation of all bound tokens with the
- previous issuer value. Instead, the tokens issued by previous service account issuer will continue to
- be trusted for a time period chosen by the platform (currently set to 24h).
- This time period is subject to change over time.
- This allows internal components to transition to use new service account issuer without service distruption.
- type: string
- type:
- description: |-
- type identifies the cluster managed, user facing authentication mode in use.
- Specifically, it manages the component that responds to login attempts.
- The default is IntegratedOAuth.
- enum:
- - ""
- - None
- - IntegratedOAuth
- - OIDC
- type: string
- webhookTokenAuthenticator:
- description: |-
- webhookTokenAuthenticator configures a remote token reviewer.
- These remote authentication webhooks can be used to verify bearer tokens
- via the tokenreviews.authentication.k8s.io REST API. This is required to
- honor bearer tokens that are provisioned by an external authentication service.
-
- Can only be set if "Type" is set to "None".
- properties:
- kubeConfig:
- description: |-
- kubeConfig references a secret that contains kube config file data which
- describes how to access the remote webhook service.
- The namespace for the referenced secret is openshift-config.
-
- For further details, see:
-
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
-
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- properties:
- name:
- description: name is the metadata.name of the referenced secret
- type: string
- required:
- - name
- type: object
- required:
- - kubeConfig
- type: object
- webhookTokenAuthenticators:
- description: webhookTokenAuthenticators is DEPRECATED, setting it
- has no effect.
- items:
- description: |-
- deprecatedWebhookTokenAuthenticator holds the necessary configuration options for a remote token authenticator.
- It's the same as WebhookTokenAuthenticator but it's missing the 'required' validation on KubeConfig field.
- properties:
- kubeConfig:
- description: |-
- kubeConfig contains kube config file data which describes how to access the remote webhook service.
- For further details, see:
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- The namespace for this secret is determined by the point of use.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- type: object
- type: array
- x-kubernetes-list-type: atomic
- type: object
- status:
- description: status holds observed values from the cluster. They may not
- be overridden.
- properties:
- integratedOAuthMetadata:
- description: |-
- integratedOAuthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for the in-cluster integrated OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- This contains the observed value based on cluster state.
- An explicitly set value in spec.oauthMetadata has precedence over this field.
- This field has no meaning if authentication spec.type is not set to IntegratedOAuth.
- The key "oauthMetadata" is used to locate the data.
- If the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config-managed.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcClients:
- description: |-
- oidcClients is where participating operators place the current OIDC client status
- for OIDC clients that can be customized by the cluster-admin.
- items:
- description: |-
- OIDCClientStatus represents the current state
- of platform components and how they interact with
- the configured identity providers.
- properties:
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component using the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component using the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- conditions:
- description: |-
- conditions are used to communicate the state of the `oidcClients` entry.
-
- Supported conditions include Available, Degraded and Progressing.
-
- If Available is true, the component is successfully using the configured client.
- If Degraded is true, that means something has gone wrong trying to handle the client configuration.
- If Progressing is true, that means the component is taking some action related to the `oidcClients` entry.
- items:
- description: Condition contains details for one aspect of
- the current state of this API Resource.
- properties:
- lastTransitionTime:
- description: |-
- lastTransitionTime is the last time the condition transitioned from one status to another.
- This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: |-
- message is a human readable message indicating details about the transition.
- This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: |-
- observedGeneration represents the .metadata.generation that the condition was set based upon.
- For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
- with respect to the current state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: |-
- reason contains a programmatic identifier indicating the reason for the condition's last transition.
- Producers of specific condition types may define expected values and meanings for this field,
- and whether the values are considered a guaranteed API.
- The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False,
- Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - type
- x-kubernetes-list-type: map
- consumingUsers:
- description: |-
- consumingUsers is an optional list of ServiceAccounts requiring
- read permissions on the `clientSecret` secret.
-
- consumingUsers must not exceed 5 entries.
- items:
- description: ConsumingUser is an alias for string which we
- add validation to. Currently only service accounts are supported.
- maxLength: 512
- minLength: 1
- pattern: ^system:serviceaccount:[a-z0-9]([-a-z0-9]*[a-z0-9])?:[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- type: string
- maxItems: 5
- type: array
- x-kubernetes-list-type: set
- currentOIDCClients:
- description: |-
- currentOIDCClients is an optional list of clients that the component is currently using.
- Entries must have unique issuerURL/clientID pairs.
- items:
- description: |-
- OIDCClientReference is a reference to a platform component
- client configuration.
- properties:
- clientID:
- description: |-
- clientID is a required field that specifies the client identifier, from
- the identity provider, that the platform component is using for authentication
- requests made to the identity provider.
-
- clientID must not be empty.
- minLength: 1
- type: string
- issuerURL:
- description: |-
- issuerURL is a required field that specifies the URL of the identity
- provider that this client is configured to make requests against.
-
- issuerURL must use the 'https' scheme.
- pattern: ^https:\/\/[^\s]
- type: string
- oidcProviderName:
- description: |-
- oidcProviderName is a required reference to the 'name' of the identity provider
- configured in 'oidcProviders' that this client is associated with.
-
- oidcProviderName must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - clientID
- - issuerURL
- - oidcProviderName
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - issuerURL
- - clientID
- x-kubernetes-list-type: map
- required:
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- type: object
- required:
- - spec
- type: object
- x-kubernetes-validations:
- - message: all oidcClients in the oidcProviders must match their componentName
- and componentNamespace to either a previously configured oidcClient or
- they must exist in the status.oidcClients
- rule: '!has(self.spec.oidcProviders) || self.spec.oidcProviders.all(p, !has(p.oidcClients)
- || p.oidcClients.all(specC, self.status.oidcClients.exists(statusC, statusC.componentNamespace
- == specC.componentNamespace && statusC.componentName == specC.componentName)
- || (has(oldSelf.spec.oidcProviders) && oldSelf.spec.oidcProviders.exists(oldP,
- oldP.name == p.name && has(oldP.oidcClients) && oldP.oidcClients.exists(oldC,
- oldC.componentNamespace == specC.componentNamespace && oldC.componentName
- == specC.componentName)))))'
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-DevPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-DevPreviewNoUpgrade.crd.yaml
deleted file mode 100644
index 195efce400..0000000000
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-DevPreviewNoUpgrade.crd.yaml
+++ /dev/null
@@ -1,870 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- api-approved.openshift.io: https://github.com/openshift/api/pull/470
- api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
- release.openshift.io/bootstrap-required: "true"
- release.openshift.io/feature-set: DevPreviewNoUpgrade
- name: authentications.config.openshift.io
-spec:
- group: config.openshift.io
- names:
- kind: Authentication
- listKind: AuthenticationList
- plural: authentications
- singular: authentication
- scope: Cluster
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: |-
- Authentication specifies cluster-wide settings for authentication (like OAuth and
- webhook token authenticators). The canonical name of an instance is `cluster`.
-
- Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
- properties:
- apiVersion:
- description: |-
- APIVersion defines the versioned schema of this representation of an object.
- Servers should convert recognized schemas to the latest internal value, and
- may reject unrecognized values.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- type: string
- kind:
- description: |-
- Kind is a string value representing the REST resource this object represents.
- Servers may infer this from the endpoint the client submits requests to.
- Cannot be updated.
- In CamelCase.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- type: string
- metadata:
- type: object
- spec:
- description: spec holds user settable values for configuration
- properties:
- oauthMetadata:
- description: |-
- oauthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for an external OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- If oauthMetadata.name is non-empty, this value has precedence
- over any metadata reference stored in status.
- The key "oauthMetadata" is used to locate the data.
- If specified and the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcProviders:
- description: |-
- oidcProviders are OIDC identity providers that can issue tokens
- for this cluster
- Can only be set if "Type" is set to "OIDC".
-
- At most one provider can be configured.
- items:
- properties:
- claimMappings:
- description: |-
- claimMappings is a required field that configures the rules to be used by
- the Kubernetes API server for translating claims in a JWT token, issued
- by the identity provider, to a cluster identity.
- properties:
- extra:
- description: |-
- extra is an optional field for configuring the mappings
- used to construct the extra attribute for the cluster identity.
- When omitted, no extra attributes will be present on the cluster identity.
- key values for extra mappings must be unique.
- A maximum of 32 extra attribute mappings may be provided.
- items:
- description: |-
- ExtraMapping allows specifying a key and CEL expression
- to evaluate the keys' value. It is used to create additional
- mappings and attributes added to a cluster identity from
- a provided authentication token.
- properties:
- key:
- description: |-
- key is a required field that specifies the string
- to use as the extra attribute key.
-
- key must be a domain-prefix path (e.g 'example.org/foo').
- key must not exceed 510 characters in length.
- key must contain the '/' character, separating the domain and path characters.
- key must not be empty.
-
- The domain portion of the key (string of characters prior to the '/') must be a valid RFC1123 subdomain.
- It must not exceed 253 characters in length.
- It must start and end with an alphanumeric character.
- It must only contain lower case alphanumeric characters and '-' or '.'.
- It must not use the reserved domains, or be subdomains of, "kubernetes.io", "k8s.io", and "openshift.io".
-
- The path portion of the key (string of characters after the '/') must not be empty and must consist of at least one
- alphanumeric character, percent-encoded octets, '-', '.', '_', '~', '!', '$', '&', ''', '(', ')', '*', '+', ',', ';', '=', and ':'.
- It must not exceed 256 characters in length.
- maxLength: 510
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: key must contain the '/' character
- rule: self.contains('/')
- - message: the domain of the key must consist of only
- lower case alphanumeric characters, '-' or '.',
- and must start and end with an alphanumeric character
- rule: self.split('/', 2)[0].matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- - message: the domain of the key must not exceed 253
- characters in length
- rule: self.split('/', 2)[0].size() <= 253
- - message: the domain 'kubernetes.io' is reserved
- for Kubernetes use
- rule: self.split('/', 2)[0] != 'kubernetes.io'
- - message: the subdomains '*.kubernetes.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.kubernetes.io'')'
- - message: the domain 'k8s.io' is reserved for Kubernetes
- use
- rule: self.split('/', 2)[0] != 'k8s.io'
- - message: the subdomains '*.k8s.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.k8s.io'')'
- - message: the domain 'openshift.io' is reserved for
- OpenShift use
- rule: self.split('/', 2)[0] != 'openshift.io'
- - message: the subdomains '*.openshift.io' are reserved
- for OpenShift use
- rule: '!self.split(''/'', 2)[0].endsWith(''.openshift.io'')'
- - message: the path of the key must not be empty and
- must consist of at least one alphanumeric character,
- percent-encoded octets, apostrophe, '-', '.',
- '_', '~', '!', '$', '&', '(', ')', '*', '+', ',',
- ';', '=', and ':'
- rule: self.split('/', 2)[1].matches('[A-Za-z0-9/\\-._~%!$&\'()*+;=:]+')
- - message: the path of the key must not exceed 256
- characters in length
- rule: self.split('/', 2)[1].size() <= 256
- valueExpression:
- description: |-
- valueExpression is a required field to specify the CEL expression to extract
- the extra attribute value from a JWT token's claims.
- valueExpression must produce a string or string array value.
- "", [], and null are treated as the extra mapping not being present.
- Empty string values within an array are filtered out.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- valueExpression must not exceed 1024 characters in length.
- valueExpression must not be empty.
- maxLength: 1024
- minLength: 1
- type: string
- required:
- - key
- - valueExpression
- type: object
- maxItems: 32
- type: array
- x-kubernetes-list-map-keys:
- - key
- x-kubernetes-list-type: map
- groups:
- description: |-
- groups is an optional field that configures how the groups of a cluster identity
- should be constructed from the claims in a JWT token issued
- by the identity provider.
- When referencing a claim, if the claim is present in the JWT
- token, its value must be a list of groups separated by a comma (',').
- For example - '"example"' and '"exampleOne", "exampleTwo", "exampleThree"' are valid claim values.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
- type: string
- prefix:
- description: |-
- prefix is an optional field that configures the prefix that will be
- applied to the cluster identity attribute during the process of mapping
- JWT claims to cluster identity attributes.
-
- When omitted (""), no prefix is applied to the cluster identity attribute.
-
- Example: if `prefix` is set to "myoidc:" and the `claim` in JWT contains
- an array of strings "a", "b" and "c", the mapping will result in an
- array of string "myoidc:a", "myoidc:b" and "myoidc:c".
- type: string
- required:
- - claim
- type: object
- uid:
- description: |-
- uid is an optional field for configuring the claim mapping
- used to construct the uid for the cluster identity.
-
- When using uid.claim to specify the claim it must be a single string value.
- When using uid.expression the expression must result in a single string value.
-
- When omitted, this means the user has no opinion and the platform
- is left to choose a default, which is subject to change over time.
- The current default is to use the 'sub' claim.
- properties:
- claim:
- description: |-
- claim is an optional field for specifying the
- JWT token claim that is used in the mapping.
- The value of this claim will be assigned to
- the field in which this mapping is associated.
-
- Precisely one of claim or expression must be set.
- claim must not be specified when expression is set.
- When specified, claim must be at least 1 character in length
- and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- expression:
- description: |-
- expression is an optional field for specifying a
- CEL expression that produces a string value from
- JWT token claims.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- Precisely one of claim or expression must be set.
- expression must not be specified when claim is set.
- When specified, expression must be at least 1 character in length
- and must not exceed 1024 characters in length.
- maxLength: 1024
- minLength: 1
- type: string
- type: object
- x-kubernetes-validations:
- - message: precisely one of claim or expression must be
- set
- rule: 'has(self.claim) ? !has(self.expression) : has(self.expression)'
- username:
- description: |-
- username is a required field that configures how the username of a cluster identity
- should be constructed from the claims in a JWT token issued by the identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
-
- claim must not be an empty string ("") and must not exceed 256 characters.
- maxLength: 256
- minLength: 1
- type: string
- prefix:
- description: |-
- prefix configures the prefix that should be prepended to the value
- of the JWT claim.
-
- prefix must be set when prefixPolicy is set to 'Prefix' and must be unset otherwise.
- properties:
- prefixString:
- description: |-
- prefixString is a required field that configures the prefix that will
- be applied to cluster identity username attribute
- during the process of mapping JWT claims to cluster identity attributes.
-
- prefixString must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - prefixString
- type: object
- prefixPolicy:
- description: |-
- prefixPolicy is an optional field that configures how a prefix should be
- applied to the value of the JWT claim specified in the 'claim' field.
-
- Allowed values are 'Prefix', 'NoPrefix', and omitted (not provided or an empty string).
-
- When set to 'Prefix', the value specified in the prefix field will be
- prepended to the value of the JWT claim.
- The prefix field must be set when prefixPolicy is 'Prefix'.
-
- When set to 'NoPrefix', no prefix will be prepended to the value
- of the JWT claim.
-
- When omitted, this means no opinion and the platform is left to choose
- any prefixes that are applied which is subject to change over time.
- Currently, the platform prepends `{issuerURL}#` to the value of the JWT claim
- when the claim is not 'email'.
- As an example, consider the following scenario:
- `prefix` is unset, `issuerURL` is set to `https://myoidc.tld`,
- the JWT claims include "username":"userA" and "email":"userA@myoidc.tld",
- and `claim` is set to:
- - "username": the mapped value will be "https://myoidc.tld#userA"
- - "email": the mapped value will be "userA@myoidc.tld"
- enum:
- - ""
- - NoPrefix
- - Prefix
- type: string
- required:
- - claim
- type: object
- x-kubernetes-validations:
- - message: prefix must be set if prefixPolicy is 'Prefix',
- but must remain unset otherwise
- rule: 'has(self.prefixPolicy) && self.prefixPolicy ==
- ''Prefix'' ? (has(self.prefix) && size(self.prefix.prefixString)
- > 0) : !has(self.prefix)'
- required:
- - username
- type: object
- claimValidationRules:
- description: |-
- claimValidationRules is an optional field that configures the rules to
- be used by the Kubernetes API server for validating the claims in a JWT
- token issued by the identity provider.
-
- Validation rules are joined via an AND operation.
- items:
- properties:
- requiredClaim:
- description: |-
- requiredClaim is an optional field that configures the required claim
- and value that the Kubernetes API server will use to validate if an incoming
- JWT is valid for this identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the name of the required claim.
- When taken from the JWT claims, claim must be a string value.
-
- claim must not be an empty string ("").
- minLength: 1
- type: string
- requiredValue:
- description: |-
- requiredValue is a required field that configures the value that 'claim' must
- have when taken from the incoming JWT claims.
- If the value in the JWT claims does not match, the token
- will be rejected for authentication.
-
- requiredValue must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - claim
- - requiredValue
- type: object
- type:
- default: RequiredClaim
- description: |-
- type is an optional field that configures the type of the validation rule.
-
- Allowed values are 'RequiredClaim' and omitted (not provided or an empty string).
-
- When set to 'RequiredClaim', the Kubernetes API server
- will be configured to validate that the incoming JWT
- contains the required claim and that its value matches
- the required value.
-
- Defaults to 'RequiredClaim'.
- enum:
- - RequiredClaim
- type: string
- type: object
- type: array
- x-kubernetes-list-type: atomic
- issuer:
- description: |-
- issuer is a required field that configures how the platform interacts
- with the identity provider and how tokens issued from the identity provider
- are evaluated by the Kubernetes API server.
- properties:
- audiences:
- description: |-
- audiences is a required field that configures the acceptable audiences
- the JWT token, issued by the identity provider, must be issued to.
- At least one of the entries must match the 'aud' claim in the JWT token.
-
- audiences must contain at least one entry and must not exceed ten entries.
- items:
- minLength: 1
- type: string
- maxItems: 10
- minItems: 1
- type: array
- x-kubernetes-list-type: set
- issuerCertificateAuthority:
- description: |-
- issuerCertificateAuthority is an optional field that configures the
- certificate authority, used by the Kubernetes API server, to validate
- the connection to the identity provider when fetching discovery information.
-
- When not specified, the system trust is used.
-
- When specified, it must reference a ConfigMap in the openshift-config
- namespace containing the PEM-encoded CA certificates under the 'ca-bundle.crt'
- key in the data field of the ConfigMap.
- properties:
- name:
- description: name is the metadata.name of the referenced
- config map
- type: string
- required:
- - name
- type: object
- issuerURL:
- description: |-
- issuerURL is a required field that configures the URL used to issue tokens
- by the identity provider.
- The Kubernetes API server determines how authentication tokens should be handled
- by matching the 'iss' claim in the JWT to the issuerURL of configured identity providers.
-
- Must be at least 1 character and must not exceed 512 characters in length.
- Must be a valid URL that uses the 'https' scheme and does not contain a query, fragment or user.
- maxLength: 512
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must be a valid URL
- rule: isURL(self)
- - message: must use the 'https' scheme
- rule: isURL(self) && url(self).getScheme() == 'https'
- - message: must not have a query
- rule: isURL(self) && url(self).getQuery() == {}
- - message: must not have a fragment
- rule: self.find('#(.+)$') == ''
- - message: must not have user info
- rule: self.find('@') == ''
- required:
- - audiences
- - issuerURL
- type: object
- name:
- description: |-
- name is a required field that configures the unique human-readable identifier
- associated with the identity provider.
- It is used to distinguish between multiple identity providers
- and has no impact on token validation or authentication mechanics.
-
- name must not be an empty string ("").
- minLength: 1
- type: string
- oidcClients:
- description: |-
- oidcClients is an optional field that configures how on-cluster,
- platform clients should request tokens from the identity provider.
- oidcClients must not exceed 20 entries and entries must have unique namespace/name pairs.
- items:
- description: |-
- OIDCClientConfig configures how platform clients
- interact with identity providers as an authentication
- method
- properties:
- clientID:
- description: |-
- clientID is a required field that configures the client identifier, from
- the identity provider, that the platform component uses for authentication
- requests made to the identity provider.
- The identity provider must accept this identifier for platform components
- to be able to use the identity provider as an authentication mode.
-
- clientID must not be an empty string ("").
- minLength: 1
- type: string
- clientSecret:
- description: |-
- clientSecret is an optional field that configures the client secret used
- by the platform component when making authentication requests to the identity provider.
-
- When not specified, no client secret will be used when making authentication requests
- to the identity provider.
-
- When specified, clientSecret references a Secret in the 'openshift-config'
- namespace that contains the client secret in the 'clientSecret' key of the '.data' field.
- The client secret will be used when making authentication requests to the identity provider.
-
- Public clients do not require a client secret but private
- clients do require a client secret to work with the identity provider.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component being configured to use the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component being configured to use the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- extraScopes:
- description: |-
- extraScopes is an optional field that configures the extra scopes that should
- be requested by the platform component when making authentication requests to the
- identity provider.
- This is useful if you have configured claim mappings that requires specific
- scopes to be requested beyond the standard OIDC scopes.
-
- When omitted, no additional scopes are requested.
- items:
- type: string
- type: array
- x-kubernetes-list-type: set
- required:
- - clientID
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- required:
- - claimMappings
- - issuer
- - name
- type: object
- maxItems: 1
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- serviceAccountIssuer:
- description: |-
- serviceAccountIssuer is the identifier of the bound service account token
- issuer.
- The default is https://kubernetes.default.svc
- WARNING: Updating this field will not result in immediate invalidation of all bound tokens with the
- previous issuer value. Instead, the tokens issued by previous service account issuer will continue to
- be trusted for a time period chosen by the platform (currently set to 24h).
- This time period is subject to change over time.
- This allows internal components to transition to use new service account issuer without service distruption.
- type: string
- type:
- description: |-
- type identifies the cluster managed, user facing authentication mode in use.
- Specifically, it manages the component that responds to login attempts.
- The default is IntegratedOAuth.
- enum:
- - ""
- - None
- - IntegratedOAuth
- - OIDC
- type: string
- webhookTokenAuthenticator:
- description: |-
- webhookTokenAuthenticator configures a remote token reviewer.
- These remote authentication webhooks can be used to verify bearer tokens
- via the tokenreviews.authentication.k8s.io REST API. This is required to
- honor bearer tokens that are provisioned by an external authentication service.
-
- Can only be set if "Type" is set to "None".
- properties:
- kubeConfig:
- description: |-
- kubeConfig references a secret that contains kube config file data which
- describes how to access the remote webhook service.
- The namespace for the referenced secret is openshift-config.
-
- For further details, see:
-
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
-
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- properties:
- name:
- description: name is the metadata.name of the referenced secret
- type: string
- required:
- - name
- type: object
- required:
- - kubeConfig
- type: object
- webhookTokenAuthenticators:
- description: webhookTokenAuthenticators is DEPRECATED, setting it
- has no effect.
- items:
- description: |-
- deprecatedWebhookTokenAuthenticator holds the necessary configuration options for a remote token authenticator.
- It's the same as WebhookTokenAuthenticator but it's missing the 'required' validation on KubeConfig field.
- properties:
- kubeConfig:
- description: |-
- kubeConfig contains kube config file data which describes how to access the remote webhook service.
- For further details, see:
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- The namespace for this secret is determined by the point of use.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- type: object
- type: array
- x-kubernetes-list-type: atomic
- type: object
- status:
- description: status holds observed values from the cluster. They may not
- be overridden.
- properties:
- integratedOAuthMetadata:
- description: |-
- integratedOAuthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for the in-cluster integrated OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- This contains the observed value based on cluster state.
- An explicitly set value in spec.oauthMetadata has precedence over this field.
- This field has no meaning if authentication spec.type is not set to IntegratedOAuth.
- The key "oauthMetadata" is used to locate the data.
- If the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config-managed.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcClients:
- description: |-
- oidcClients is where participating operators place the current OIDC client status
- for OIDC clients that can be customized by the cluster-admin.
- items:
- description: |-
- OIDCClientStatus represents the current state
- of platform components and how they interact with
- the configured identity providers.
- properties:
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component using the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component using the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- conditions:
- description: |-
- conditions are used to communicate the state of the `oidcClients` entry.
-
- Supported conditions include Available, Degraded and Progressing.
-
- If Available is true, the component is successfully using the configured client.
- If Degraded is true, that means something has gone wrong trying to handle the client configuration.
- If Progressing is true, that means the component is taking some action related to the `oidcClients` entry.
- items:
- description: Condition contains details for one aspect of
- the current state of this API Resource.
- properties:
- lastTransitionTime:
- description: |-
- lastTransitionTime is the last time the condition transitioned from one status to another.
- This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: |-
- message is a human readable message indicating details about the transition.
- This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: |-
- observedGeneration represents the .metadata.generation that the condition was set based upon.
- For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
- with respect to the current state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: |-
- reason contains a programmatic identifier indicating the reason for the condition's last transition.
- Producers of specific condition types may define expected values and meanings for this field,
- and whether the values are considered a guaranteed API.
- The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False,
- Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - type
- x-kubernetes-list-type: map
- consumingUsers:
- description: |-
- consumingUsers is an optional list of ServiceAccounts requiring
- read permissions on the `clientSecret` secret.
-
- consumingUsers must not exceed 5 entries.
- items:
- description: ConsumingUser is an alias for string which we
- add validation to. Currently only service accounts are supported.
- maxLength: 512
- minLength: 1
- pattern: ^system:serviceaccount:[a-z0-9]([-a-z0-9]*[a-z0-9])?:[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- type: string
- maxItems: 5
- type: array
- x-kubernetes-list-type: set
- currentOIDCClients:
- description: |-
- currentOIDCClients is an optional list of clients that the component is currently using.
- Entries must have unique issuerURL/clientID pairs.
- items:
- description: |-
- OIDCClientReference is a reference to a platform component
- client configuration.
- properties:
- clientID:
- description: |-
- clientID is a required field that specifies the client identifier, from
- the identity provider, that the platform component is using for authentication
- requests made to the identity provider.
-
- clientID must not be empty.
- minLength: 1
- type: string
- issuerURL:
- description: |-
- issuerURL is a required field that specifies the URL of the identity
- provider that this client is configured to make requests against.
-
- issuerURL must use the 'https' scheme.
- pattern: ^https:\/\/[^\s]
- type: string
- oidcProviderName:
- description: |-
- oidcProviderName is a required reference to the 'name' of the identity provider
- configured in 'oidcProviders' that this client is associated with.
-
- oidcProviderName must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - clientID
- - issuerURL
- - oidcProviderName
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - issuerURL
- - clientID
- x-kubernetes-list-type: map
- required:
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- type: object
- required:
- - spec
- type: object
- x-kubernetes-validations:
- - message: all oidcClients in the oidcProviders must match their componentName
- and componentNamespace to either a previously configured oidcClient or
- they must exist in the status.oidcClients
- rule: '!has(self.spec.oidcProviders) || self.spec.oidcProviders.all(p, !has(p.oidcClients)
- || p.oidcClients.all(specC, self.status.oidcClients.exists(statusC, statusC.componentNamespace
- == specC.componentNamespace && statusC.componentName == specC.componentName)
- || (has(oldSelf.spec.oidcProviders) && oldSelf.spec.oidcProviders.exists(oldP,
- oldP.name == p.name && has(oldP.oidcClients) && oldP.oidcClients.exists(oldC,
- oldC.componentNamespace == specC.componentNamespace && oldC.componentName
- == specC.componentName)))))'
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-TechPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-TechPreviewNoUpgrade.crd.yaml
deleted file mode 100644
index 4e8c79c320..0000000000
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-Hypershift-TechPreviewNoUpgrade.crd.yaml
+++ /dev/null
@@ -1,870 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- api-approved.openshift.io: https://github.com/openshift/api/pull/470
- api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
- release.openshift.io/bootstrap-required: "true"
- release.openshift.io/feature-set: TechPreviewNoUpgrade
- name: authentications.config.openshift.io
-spec:
- group: config.openshift.io
- names:
- kind: Authentication
- listKind: AuthenticationList
- plural: authentications
- singular: authentication
- scope: Cluster
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: |-
- Authentication specifies cluster-wide settings for authentication (like OAuth and
- webhook token authenticators). The canonical name of an instance is `cluster`.
-
- Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
- properties:
- apiVersion:
- description: |-
- APIVersion defines the versioned schema of this representation of an object.
- Servers should convert recognized schemas to the latest internal value, and
- may reject unrecognized values.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- type: string
- kind:
- description: |-
- Kind is a string value representing the REST resource this object represents.
- Servers may infer this from the endpoint the client submits requests to.
- Cannot be updated.
- In CamelCase.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- type: string
- metadata:
- type: object
- spec:
- description: spec holds user settable values for configuration
- properties:
- oauthMetadata:
- description: |-
- oauthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for an external OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- If oauthMetadata.name is non-empty, this value has precedence
- over any metadata reference stored in status.
- The key "oauthMetadata" is used to locate the data.
- If specified and the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcProviders:
- description: |-
- oidcProviders are OIDC identity providers that can issue tokens
- for this cluster
- Can only be set if "Type" is set to "OIDC".
-
- At most one provider can be configured.
- items:
- properties:
- claimMappings:
- description: |-
- claimMappings is a required field that configures the rules to be used by
- the Kubernetes API server for translating claims in a JWT token, issued
- by the identity provider, to a cluster identity.
- properties:
- extra:
- description: |-
- extra is an optional field for configuring the mappings
- used to construct the extra attribute for the cluster identity.
- When omitted, no extra attributes will be present on the cluster identity.
- key values for extra mappings must be unique.
- A maximum of 32 extra attribute mappings may be provided.
- items:
- description: |-
- ExtraMapping allows specifying a key and CEL expression
- to evaluate the keys' value. It is used to create additional
- mappings and attributes added to a cluster identity from
- a provided authentication token.
- properties:
- key:
- description: |-
- key is a required field that specifies the string
- to use as the extra attribute key.
-
- key must be a domain-prefix path (e.g 'example.org/foo').
- key must not exceed 510 characters in length.
- key must contain the '/' character, separating the domain and path characters.
- key must not be empty.
-
- The domain portion of the key (string of characters prior to the '/') must be a valid RFC1123 subdomain.
- It must not exceed 253 characters in length.
- It must start and end with an alphanumeric character.
- It must only contain lower case alphanumeric characters and '-' or '.'.
- It must not use the reserved domains, or be subdomains of, "kubernetes.io", "k8s.io", and "openshift.io".
-
- The path portion of the key (string of characters after the '/') must not be empty and must consist of at least one
- alphanumeric character, percent-encoded octets, '-', '.', '_', '~', '!', '$', '&', ''', '(', ')', '*', '+', ',', ';', '=', and ':'.
- It must not exceed 256 characters in length.
- maxLength: 510
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: key must contain the '/' character
- rule: self.contains('/')
- - message: the domain of the key must consist of only
- lower case alphanumeric characters, '-' or '.',
- and must start and end with an alphanumeric character
- rule: self.split('/', 2)[0].matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- - message: the domain of the key must not exceed 253
- characters in length
- rule: self.split('/', 2)[0].size() <= 253
- - message: the domain 'kubernetes.io' is reserved
- for Kubernetes use
- rule: self.split('/', 2)[0] != 'kubernetes.io'
- - message: the subdomains '*.kubernetes.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.kubernetes.io'')'
- - message: the domain 'k8s.io' is reserved for Kubernetes
- use
- rule: self.split('/', 2)[0] != 'k8s.io'
- - message: the subdomains '*.k8s.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.k8s.io'')'
- - message: the domain 'openshift.io' is reserved for
- OpenShift use
- rule: self.split('/', 2)[0] != 'openshift.io'
- - message: the subdomains '*.openshift.io' are reserved
- for OpenShift use
- rule: '!self.split(''/'', 2)[0].endsWith(''.openshift.io'')'
- - message: the path of the key must not be empty and
- must consist of at least one alphanumeric character,
- percent-encoded octets, apostrophe, '-', '.',
- '_', '~', '!', '$', '&', '(', ')', '*', '+', ',',
- ';', '=', and ':'
- rule: self.split('/', 2)[1].matches('[A-Za-z0-9/\\-._~%!$&\'()*+;=:]+')
- - message: the path of the key must not exceed 256
- characters in length
- rule: self.split('/', 2)[1].size() <= 256
- valueExpression:
- description: |-
- valueExpression is a required field to specify the CEL expression to extract
- the extra attribute value from a JWT token's claims.
- valueExpression must produce a string or string array value.
- "", [], and null are treated as the extra mapping not being present.
- Empty string values within an array are filtered out.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- valueExpression must not exceed 1024 characters in length.
- valueExpression must not be empty.
- maxLength: 1024
- minLength: 1
- type: string
- required:
- - key
- - valueExpression
- type: object
- maxItems: 32
- type: array
- x-kubernetes-list-map-keys:
- - key
- x-kubernetes-list-type: map
- groups:
- description: |-
- groups is an optional field that configures how the groups of a cluster identity
- should be constructed from the claims in a JWT token issued
- by the identity provider.
- When referencing a claim, if the claim is present in the JWT
- token, its value must be a list of groups separated by a comma (',').
- For example - '"example"' and '"exampleOne", "exampleTwo", "exampleThree"' are valid claim values.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
- type: string
- prefix:
- description: |-
- prefix is an optional field that configures the prefix that will be
- applied to the cluster identity attribute during the process of mapping
- JWT claims to cluster identity attributes.
-
- When omitted (""), no prefix is applied to the cluster identity attribute.
-
- Example: if `prefix` is set to "myoidc:" and the `claim` in JWT contains
- an array of strings "a", "b" and "c", the mapping will result in an
- array of string "myoidc:a", "myoidc:b" and "myoidc:c".
- type: string
- required:
- - claim
- type: object
- uid:
- description: |-
- uid is an optional field for configuring the claim mapping
- used to construct the uid for the cluster identity.
-
- When using uid.claim to specify the claim it must be a single string value.
- When using uid.expression the expression must result in a single string value.
-
- When omitted, this means the user has no opinion and the platform
- is left to choose a default, which is subject to change over time.
- The current default is to use the 'sub' claim.
- properties:
- claim:
- description: |-
- claim is an optional field for specifying the
- JWT token claim that is used in the mapping.
- The value of this claim will be assigned to
- the field in which this mapping is associated.
-
- Precisely one of claim or expression must be set.
- claim must not be specified when expression is set.
- When specified, claim must be at least 1 character in length
- and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- expression:
- description: |-
- expression is an optional field for specifying a
- CEL expression that produces a string value from
- JWT token claims.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- Precisely one of claim or expression must be set.
- expression must not be specified when claim is set.
- When specified, expression must be at least 1 character in length
- and must not exceed 1024 characters in length.
- maxLength: 1024
- minLength: 1
- type: string
- type: object
- x-kubernetes-validations:
- - message: precisely one of claim or expression must be
- set
- rule: 'has(self.claim) ? !has(self.expression) : has(self.expression)'
- username:
- description: |-
- username is a required field that configures how the username of a cluster identity
- should be constructed from the claims in a JWT token issued by the identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
-
- claim must not be an empty string ("") and must not exceed 256 characters.
- maxLength: 256
- minLength: 1
- type: string
- prefix:
- description: |-
- prefix configures the prefix that should be prepended to the value
- of the JWT claim.
-
- prefix must be set when prefixPolicy is set to 'Prefix' and must be unset otherwise.
- properties:
- prefixString:
- description: |-
- prefixString is a required field that configures the prefix that will
- be applied to cluster identity username attribute
- during the process of mapping JWT claims to cluster identity attributes.
-
- prefixString must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - prefixString
- type: object
- prefixPolicy:
- description: |-
- prefixPolicy is an optional field that configures how a prefix should be
- applied to the value of the JWT claim specified in the 'claim' field.
-
- Allowed values are 'Prefix', 'NoPrefix', and omitted (not provided or an empty string).
-
- When set to 'Prefix', the value specified in the prefix field will be
- prepended to the value of the JWT claim.
- The prefix field must be set when prefixPolicy is 'Prefix'.
-
- When set to 'NoPrefix', no prefix will be prepended to the value
- of the JWT claim.
-
- When omitted, this means no opinion and the platform is left to choose
- any prefixes that are applied which is subject to change over time.
- Currently, the platform prepends `{issuerURL}#` to the value of the JWT claim
- when the claim is not 'email'.
- As an example, consider the following scenario:
- `prefix` is unset, `issuerURL` is set to `https://myoidc.tld`,
- the JWT claims include "username":"userA" and "email":"userA@myoidc.tld",
- and `claim` is set to:
- - "username": the mapped value will be "https://myoidc.tld#userA"
- - "email": the mapped value will be "userA@myoidc.tld"
- enum:
- - ""
- - NoPrefix
- - Prefix
- type: string
- required:
- - claim
- type: object
- x-kubernetes-validations:
- - message: prefix must be set if prefixPolicy is 'Prefix',
- but must remain unset otherwise
- rule: 'has(self.prefixPolicy) && self.prefixPolicy ==
- ''Prefix'' ? (has(self.prefix) && size(self.prefix.prefixString)
- > 0) : !has(self.prefix)'
- required:
- - username
- type: object
- claimValidationRules:
- description: |-
- claimValidationRules is an optional field that configures the rules to
- be used by the Kubernetes API server for validating the claims in a JWT
- token issued by the identity provider.
-
- Validation rules are joined via an AND operation.
- items:
- properties:
- requiredClaim:
- description: |-
- requiredClaim is an optional field that configures the required claim
- and value that the Kubernetes API server will use to validate if an incoming
- JWT is valid for this identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the name of the required claim.
- When taken from the JWT claims, claim must be a string value.
-
- claim must not be an empty string ("").
- minLength: 1
- type: string
- requiredValue:
- description: |-
- requiredValue is a required field that configures the value that 'claim' must
- have when taken from the incoming JWT claims.
- If the value in the JWT claims does not match, the token
- will be rejected for authentication.
-
- requiredValue must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - claim
- - requiredValue
- type: object
- type:
- default: RequiredClaim
- description: |-
- type is an optional field that configures the type of the validation rule.
-
- Allowed values are 'RequiredClaim' and omitted (not provided or an empty string).
-
- When set to 'RequiredClaim', the Kubernetes API server
- will be configured to validate that the incoming JWT
- contains the required claim and that its value matches
- the required value.
-
- Defaults to 'RequiredClaim'.
- enum:
- - RequiredClaim
- type: string
- type: object
- type: array
- x-kubernetes-list-type: atomic
- issuer:
- description: |-
- issuer is a required field that configures how the platform interacts
- with the identity provider and how tokens issued from the identity provider
- are evaluated by the Kubernetes API server.
- properties:
- audiences:
- description: |-
- audiences is a required field that configures the acceptable audiences
- the JWT token, issued by the identity provider, must be issued to.
- At least one of the entries must match the 'aud' claim in the JWT token.
-
- audiences must contain at least one entry and must not exceed ten entries.
- items:
- minLength: 1
- type: string
- maxItems: 10
- minItems: 1
- type: array
- x-kubernetes-list-type: set
- issuerCertificateAuthority:
- description: |-
- issuerCertificateAuthority is an optional field that configures the
- certificate authority, used by the Kubernetes API server, to validate
- the connection to the identity provider when fetching discovery information.
-
- When not specified, the system trust is used.
-
- When specified, it must reference a ConfigMap in the openshift-config
- namespace containing the PEM-encoded CA certificates under the 'ca-bundle.crt'
- key in the data field of the ConfigMap.
- properties:
- name:
- description: name is the metadata.name of the referenced
- config map
- type: string
- required:
- - name
- type: object
- issuerURL:
- description: |-
- issuerURL is a required field that configures the URL used to issue tokens
- by the identity provider.
- The Kubernetes API server determines how authentication tokens should be handled
- by matching the 'iss' claim in the JWT to the issuerURL of configured identity providers.
-
- Must be at least 1 character and must not exceed 512 characters in length.
- Must be a valid URL that uses the 'https' scheme and does not contain a query, fragment or user.
- maxLength: 512
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must be a valid URL
- rule: isURL(self)
- - message: must use the 'https' scheme
- rule: isURL(self) && url(self).getScheme() == 'https'
- - message: must not have a query
- rule: isURL(self) && url(self).getQuery() == {}
- - message: must not have a fragment
- rule: self.find('#(.+)$') == ''
- - message: must not have user info
- rule: self.find('@') == ''
- required:
- - audiences
- - issuerURL
- type: object
- name:
- description: |-
- name is a required field that configures the unique human-readable identifier
- associated with the identity provider.
- It is used to distinguish between multiple identity providers
- and has no impact on token validation or authentication mechanics.
-
- name must not be an empty string ("").
- minLength: 1
- type: string
- oidcClients:
- description: |-
- oidcClients is an optional field that configures how on-cluster,
- platform clients should request tokens from the identity provider.
- oidcClients must not exceed 20 entries and entries must have unique namespace/name pairs.
- items:
- description: |-
- OIDCClientConfig configures how platform clients
- interact with identity providers as an authentication
- method
- properties:
- clientID:
- description: |-
- clientID is a required field that configures the client identifier, from
- the identity provider, that the platform component uses for authentication
- requests made to the identity provider.
- The identity provider must accept this identifier for platform components
- to be able to use the identity provider as an authentication mode.
-
- clientID must not be an empty string ("").
- minLength: 1
- type: string
- clientSecret:
- description: |-
- clientSecret is an optional field that configures the client secret used
- by the platform component when making authentication requests to the identity provider.
-
- When not specified, no client secret will be used when making authentication requests
- to the identity provider.
-
- When specified, clientSecret references a Secret in the 'openshift-config'
- namespace that contains the client secret in the 'clientSecret' key of the '.data' field.
- The client secret will be used when making authentication requests to the identity provider.
-
- Public clients do not require a client secret but private
- clients do require a client secret to work with the identity provider.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component being configured to use the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component being configured to use the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- extraScopes:
- description: |-
- extraScopes is an optional field that configures the extra scopes that should
- be requested by the platform component when making authentication requests to the
- identity provider.
- This is useful if you have configured claim mappings that requires specific
- scopes to be requested beyond the standard OIDC scopes.
-
- When omitted, no additional scopes are requested.
- items:
- type: string
- type: array
- x-kubernetes-list-type: set
- required:
- - clientID
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- required:
- - claimMappings
- - issuer
- - name
- type: object
- maxItems: 1
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- serviceAccountIssuer:
- description: |-
- serviceAccountIssuer is the identifier of the bound service account token
- issuer.
- The default is https://kubernetes.default.svc
- WARNING: Updating this field will not result in immediate invalidation of all bound tokens with the
- previous issuer value. Instead, the tokens issued by previous service account issuer will continue to
- be trusted for a time period chosen by the platform (currently set to 24h).
- This time period is subject to change over time.
- This allows internal components to transition to use new service account issuer without service distruption.
- type: string
- type:
- description: |-
- type identifies the cluster managed, user facing authentication mode in use.
- Specifically, it manages the component that responds to login attempts.
- The default is IntegratedOAuth.
- enum:
- - ""
- - None
- - IntegratedOAuth
- - OIDC
- type: string
- webhookTokenAuthenticator:
- description: |-
- webhookTokenAuthenticator configures a remote token reviewer.
- These remote authentication webhooks can be used to verify bearer tokens
- via the tokenreviews.authentication.k8s.io REST API. This is required to
- honor bearer tokens that are provisioned by an external authentication service.
-
- Can only be set if "Type" is set to "None".
- properties:
- kubeConfig:
- description: |-
- kubeConfig references a secret that contains kube config file data which
- describes how to access the remote webhook service.
- The namespace for the referenced secret is openshift-config.
-
- For further details, see:
-
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
-
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- properties:
- name:
- description: name is the metadata.name of the referenced secret
- type: string
- required:
- - name
- type: object
- required:
- - kubeConfig
- type: object
- webhookTokenAuthenticators:
- description: webhookTokenAuthenticators is DEPRECATED, setting it
- has no effect.
- items:
- description: |-
- deprecatedWebhookTokenAuthenticator holds the necessary configuration options for a remote token authenticator.
- It's the same as WebhookTokenAuthenticator but it's missing the 'required' validation on KubeConfig field.
- properties:
- kubeConfig:
- description: |-
- kubeConfig contains kube config file data which describes how to access the remote webhook service.
- For further details, see:
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- The namespace for this secret is determined by the point of use.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- type: object
- type: array
- x-kubernetes-list-type: atomic
- type: object
- status:
- description: status holds observed values from the cluster. They may not
- be overridden.
- properties:
- integratedOAuthMetadata:
- description: |-
- integratedOAuthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for the in-cluster integrated OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- This contains the observed value based on cluster state.
- An explicitly set value in spec.oauthMetadata has precedence over this field.
- This field has no meaning if authentication spec.type is not set to IntegratedOAuth.
- The key "oauthMetadata" is used to locate the data.
- If the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config-managed.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcClients:
- description: |-
- oidcClients is where participating operators place the current OIDC client status
- for OIDC clients that can be customized by the cluster-admin.
- items:
- description: |-
- OIDCClientStatus represents the current state
- of platform components and how they interact with
- the configured identity providers.
- properties:
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component using the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component using the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- conditions:
- description: |-
- conditions are used to communicate the state of the `oidcClients` entry.
-
- Supported conditions include Available, Degraded and Progressing.
-
- If Available is true, the component is successfully using the configured client.
- If Degraded is true, that means something has gone wrong trying to handle the client configuration.
- If Progressing is true, that means the component is taking some action related to the `oidcClients` entry.
- items:
- description: Condition contains details for one aspect of
- the current state of this API Resource.
- properties:
- lastTransitionTime:
- description: |-
- lastTransitionTime is the last time the condition transitioned from one status to another.
- This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: |-
- message is a human readable message indicating details about the transition.
- This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: |-
- observedGeneration represents the .metadata.generation that the condition was set based upon.
- For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
- with respect to the current state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: |-
- reason contains a programmatic identifier indicating the reason for the condition's last transition.
- Producers of specific condition types may define expected values and meanings for this field,
- and whether the values are considered a guaranteed API.
- The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False,
- Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - type
- x-kubernetes-list-type: map
- consumingUsers:
- description: |-
- consumingUsers is an optional list of ServiceAccounts requiring
- read permissions on the `clientSecret` secret.
-
- consumingUsers must not exceed 5 entries.
- items:
- description: ConsumingUser is an alias for string which we
- add validation to. Currently only service accounts are supported.
- maxLength: 512
- minLength: 1
- pattern: ^system:serviceaccount:[a-z0-9]([-a-z0-9]*[a-z0-9])?:[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- type: string
- maxItems: 5
- type: array
- x-kubernetes-list-type: set
- currentOIDCClients:
- description: |-
- currentOIDCClients is an optional list of clients that the component is currently using.
- Entries must have unique issuerURL/clientID pairs.
- items:
- description: |-
- OIDCClientReference is a reference to a platform component
- client configuration.
- properties:
- clientID:
- description: |-
- clientID is a required field that specifies the client identifier, from
- the identity provider, that the platform component is using for authentication
- requests made to the identity provider.
-
- clientID must not be empty.
- minLength: 1
- type: string
- issuerURL:
- description: |-
- issuerURL is a required field that specifies the URL of the identity
- provider that this client is configured to make requests against.
-
- issuerURL must use the 'https' scheme.
- pattern: ^https:\/\/[^\s]
- type: string
- oidcProviderName:
- description: |-
- oidcProviderName is a required reference to the 'name' of the identity provider
- configured in 'oidcProviders' that this client is associated with.
-
- oidcProviderName must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - clientID
- - issuerURL
- - oidcProviderName
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - issuerURL
- - clientID
- x-kubernetes-list-type: map
- required:
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- type: object
- required:
- - spec
- type: object
- x-kubernetes-validations:
- - message: all oidcClients in the oidcProviders must match their componentName
- and componentNamespace to either a previously configured oidcClient or
- they must exist in the status.oidcClients
- rule: '!has(self.spec.oidcProviders) || self.spec.oidcProviders.all(p, !has(p.oidcClients)
- || p.oidcClients.all(specC, self.status.oidcClients.exists(statusC, statusC.componentNamespace
- == specC.componentNamespace && statusC.componentName == specC.componentName)
- || (has(oldSelf.spec.oidcProviders) && oldSelf.spec.oidcProviders.exists(oldP,
- oldP.name == p.name && has(oldP.oidcClients) && oldP.oidcClients.exists(oldC,
- oldC.componentNamespace == specC.componentNamespace && oldC.componentName
- == specC.componentName)))))'
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-CustomNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-CustomNoUpgrade.crd.yaml
deleted file mode 100644
index 72c798fae7..0000000000
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-CustomNoUpgrade.crd.yaml
+++ /dev/null
@@ -1,870 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- api-approved.openshift.io: https://github.com/openshift/api/pull/470
- api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/self-managed-high-availability: "true"
- release.openshift.io/bootstrap-required: "true"
- release.openshift.io/feature-set: CustomNoUpgrade
- name: authentications.config.openshift.io
-spec:
- group: config.openshift.io
- names:
- kind: Authentication
- listKind: AuthenticationList
- plural: authentications
- singular: authentication
- scope: Cluster
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: |-
- Authentication specifies cluster-wide settings for authentication (like OAuth and
- webhook token authenticators). The canonical name of an instance is `cluster`.
-
- Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
- properties:
- apiVersion:
- description: |-
- APIVersion defines the versioned schema of this representation of an object.
- Servers should convert recognized schemas to the latest internal value, and
- may reject unrecognized values.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- type: string
- kind:
- description: |-
- Kind is a string value representing the REST resource this object represents.
- Servers may infer this from the endpoint the client submits requests to.
- Cannot be updated.
- In CamelCase.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- type: string
- metadata:
- type: object
- spec:
- description: spec holds user settable values for configuration
- properties:
- oauthMetadata:
- description: |-
- oauthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for an external OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- If oauthMetadata.name is non-empty, this value has precedence
- over any metadata reference stored in status.
- The key "oauthMetadata" is used to locate the data.
- If specified and the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcProviders:
- description: |-
- oidcProviders are OIDC identity providers that can issue tokens
- for this cluster
- Can only be set if "Type" is set to "OIDC".
-
- At most one provider can be configured.
- items:
- properties:
- claimMappings:
- description: |-
- claimMappings is a required field that configures the rules to be used by
- the Kubernetes API server for translating claims in a JWT token, issued
- by the identity provider, to a cluster identity.
- properties:
- extra:
- description: |-
- extra is an optional field for configuring the mappings
- used to construct the extra attribute for the cluster identity.
- When omitted, no extra attributes will be present on the cluster identity.
- key values for extra mappings must be unique.
- A maximum of 32 extra attribute mappings may be provided.
- items:
- description: |-
- ExtraMapping allows specifying a key and CEL expression
- to evaluate the keys' value. It is used to create additional
- mappings and attributes added to a cluster identity from
- a provided authentication token.
- properties:
- key:
- description: |-
- key is a required field that specifies the string
- to use as the extra attribute key.
-
- key must be a domain-prefix path (e.g 'example.org/foo').
- key must not exceed 510 characters in length.
- key must contain the '/' character, separating the domain and path characters.
- key must not be empty.
-
- The domain portion of the key (string of characters prior to the '/') must be a valid RFC1123 subdomain.
- It must not exceed 253 characters in length.
- It must start and end with an alphanumeric character.
- It must only contain lower case alphanumeric characters and '-' or '.'.
- It must not use the reserved domains, or be subdomains of, "kubernetes.io", "k8s.io", and "openshift.io".
-
- The path portion of the key (string of characters after the '/') must not be empty and must consist of at least one
- alphanumeric character, percent-encoded octets, '-', '.', '_', '~', '!', '$', '&', ''', '(', ')', '*', '+', ',', ';', '=', and ':'.
- It must not exceed 256 characters in length.
- maxLength: 510
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: key must contain the '/' character
- rule: self.contains('/')
- - message: the domain of the key must consist of only
- lower case alphanumeric characters, '-' or '.',
- and must start and end with an alphanumeric character
- rule: self.split('/', 2)[0].matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- - message: the domain of the key must not exceed 253
- characters in length
- rule: self.split('/', 2)[0].size() <= 253
- - message: the domain 'kubernetes.io' is reserved
- for Kubernetes use
- rule: self.split('/', 2)[0] != 'kubernetes.io'
- - message: the subdomains '*.kubernetes.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.kubernetes.io'')'
- - message: the domain 'k8s.io' is reserved for Kubernetes
- use
- rule: self.split('/', 2)[0] != 'k8s.io'
- - message: the subdomains '*.k8s.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.k8s.io'')'
- - message: the domain 'openshift.io' is reserved for
- OpenShift use
- rule: self.split('/', 2)[0] != 'openshift.io'
- - message: the subdomains '*.openshift.io' are reserved
- for OpenShift use
- rule: '!self.split(''/'', 2)[0].endsWith(''.openshift.io'')'
- - message: the path of the key must not be empty and
- must consist of at least one alphanumeric character,
- percent-encoded octets, apostrophe, '-', '.',
- '_', '~', '!', '$', '&', '(', ')', '*', '+', ',',
- ';', '=', and ':'
- rule: self.split('/', 2)[1].matches('[A-Za-z0-9/\\-._~%!$&\'()*+;=:]+')
- - message: the path of the key must not exceed 256
- characters in length
- rule: self.split('/', 2)[1].size() <= 256
- valueExpression:
- description: |-
- valueExpression is a required field to specify the CEL expression to extract
- the extra attribute value from a JWT token's claims.
- valueExpression must produce a string or string array value.
- "", [], and null are treated as the extra mapping not being present.
- Empty string values within an array are filtered out.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- valueExpression must not exceed 1024 characters in length.
- valueExpression must not be empty.
- maxLength: 1024
- minLength: 1
- type: string
- required:
- - key
- - valueExpression
- type: object
- maxItems: 32
- type: array
- x-kubernetes-list-map-keys:
- - key
- x-kubernetes-list-type: map
- groups:
- description: |-
- groups is an optional field that configures how the groups of a cluster identity
- should be constructed from the claims in a JWT token issued
- by the identity provider.
- When referencing a claim, if the claim is present in the JWT
- token, its value must be a list of groups separated by a comma (',').
- For example - '"example"' and '"exampleOne", "exampleTwo", "exampleThree"' are valid claim values.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
- type: string
- prefix:
- description: |-
- prefix is an optional field that configures the prefix that will be
- applied to the cluster identity attribute during the process of mapping
- JWT claims to cluster identity attributes.
-
- When omitted (""), no prefix is applied to the cluster identity attribute.
-
- Example: if `prefix` is set to "myoidc:" and the `claim` in JWT contains
- an array of strings "a", "b" and "c", the mapping will result in an
- array of string "myoidc:a", "myoidc:b" and "myoidc:c".
- type: string
- required:
- - claim
- type: object
- uid:
- description: |-
- uid is an optional field for configuring the claim mapping
- used to construct the uid for the cluster identity.
-
- When using uid.claim to specify the claim it must be a single string value.
- When using uid.expression the expression must result in a single string value.
-
- When omitted, this means the user has no opinion and the platform
- is left to choose a default, which is subject to change over time.
- The current default is to use the 'sub' claim.
- properties:
- claim:
- description: |-
- claim is an optional field for specifying the
- JWT token claim that is used in the mapping.
- The value of this claim will be assigned to
- the field in which this mapping is associated.
-
- Precisely one of claim or expression must be set.
- claim must not be specified when expression is set.
- When specified, claim must be at least 1 character in length
- and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- expression:
- description: |-
- expression is an optional field for specifying a
- CEL expression that produces a string value from
- JWT token claims.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- Precisely one of claim or expression must be set.
- expression must not be specified when claim is set.
- When specified, expression must be at least 1 character in length
- and must not exceed 1024 characters in length.
- maxLength: 1024
- minLength: 1
- type: string
- type: object
- x-kubernetes-validations:
- - message: precisely one of claim or expression must be
- set
- rule: 'has(self.claim) ? !has(self.expression) : has(self.expression)'
- username:
- description: |-
- username is a required field that configures how the username of a cluster identity
- should be constructed from the claims in a JWT token issued by the identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
-
- claim must not be an empty string ("") and must not exceed 256 characters.
- maxLength: 256
- minLength: 1
- type: string
- prefix:
- description: |-
- prefix configures the prefix that should be prepended to the value
- of the JWT claim.
-
- prefix must be set when prefixPolicy is set to 'Prefix' and must be unset otherwise.
- properties:
- prefixString:
- description: |-
- prefixString is a required field that configures the prefix that will
- be applied to cluster identity username attribute
- during the process of mapping JWT claims to cluster identity attributes.
-
- prefixString must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - prefixString
- type: object
- prefixPolicy:
- description: |-
- prefixPolicy is an optional field that configures how a prefix should be
- applied to the value of the JWT claim specified in the 'claim' field.
-
- Allowed values are 'Prefix', 'NoPrefix', and omitted (not provided or an empty string).
-
- When set to 'Prefix', the value specified in the prefix field will be
- prepended to the value of the JWT claim.
- The prefix field must be set when prefixPolicy is 'Prefix'.
-
- When set to 'NoPrefix', no prefix will be prepended to the value
- of the JWT claim.
-
- When omitted, this means no opinion and the platform is left to choose
- any prefixes that are applied which is subject to change over time.
- Currently, the platform prepends `{issuerURL}#` to the value of the JWT claim
- when the claim is not 'email'.
- As an example, consider the following scenario:
- `prefix` is unset, `issuerURL` is set to `https://myoidc.tld`,
- the JWT claims include "username":"userA" and "email":"userA@myoidc.tld",
- and `claim` is set to:
- - "username": the mapped value will be "https://myoidc.tld#userA"
- - "email": the mapped value will be "userA@myoidc.tld"
- enum:
- - ""
- - NoPrefix
- - Prefix
- type: string
- required:
- - claim
- type: object
- x-kubernetes-validations:
- - message: prefix must be set if prefixPolicy is 'Prefix',
- but must remain unset otherwise
- rule: 'has(self.prefixPolicy) && self.prefixPolicy ==
- ''Prefix'' ? (has(self.prefix) && size(self.prefix.prefixString)
- > 0) : !has(self.prefix)'
- required:
- - username
- type: object
- claimValidationRules:
- description: |-
- claimValidationRules is an optional field that configures the rules to
- be used by the Kubernetes API server for validating the claims in a JWT
- token issued by the identity provider.
-
- Validation rules are joined via an AND operation.
- items:
- properties:
- requiredClaim:
- description: |-
- requiredClaim is an optional field that configures the required claim
- and value that the Kubernetes API server will use to validate if an incoming
- JWT is valid for this identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the name of the required claim.
- When taken from the JWT claims, claim must be a string value.
-
- claim must not be an empty string ("").
- minLength: 1
- type: string
- requiredValue:
- description: |-
- requiredValue is a required field that configures the value that 'claim' must
- have when taken from the incoming JWT claims.
- If the value in the JWT claims does not match, the token
- will be rejected for authentication.
-
- requiredValue must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - claim
- - requiredValue
- type: object
- type:
- default: RequiredClaim
- description: |-
- type is an optional field that configures the type of the validation rule.
-
- Allowed values are 'RequiredClaim' and omitted (not provided or an empty string).
-
- When set to 'RequiredClaim', the Kubernetes API server
- will be configured to validate that the incoming JWT
- contains the required claim and that its value matches
- the required value.
-
- Defaults to 'RequiredClaim'.
- enum:
- - RequiredClaim
- type: string
- type: object
- type: array
- x-kubernetes-list-type: atomic
- issuer:
- description: |-
- issuer is a required field that configures how the platform interacts
- with the identity provider and how tokens issued from the identity provider
- are evaluated by the Kubernetes API server.
- properties:
- audiences:
- description: |-
- audiences is a required field that configures the acceptable audiences
- the JWT token, issued by the identity provider, must be issued to.
- At least one of the entries must match the 'aud' claim in the JWT token.
-
- audiences must contain at least one entry and must not exceed ten entries.
- items:
- minLength: 1
- type: string
- maxItems: 10
- minItems: 1
- type: array
- x-kubernetes-list-type: set
- issuerCertificateAuthority:
- description: |-
- issuerCertificateAuthority is an optional field that configures the
- certificate authority, used by the Kubernetes API server, to validate
- the connection to the identity provider when fetching discovery information.
-
- When not specified, the system trust is used.
-
- When specified, it must reference a ConfigMap in the openshift-config
- namespace containing the PEM-encoded CA certificates under the 'ca-bundle.crt'
- key in the data field of the ConfigMap.
- properties:
- name:
- description: name is the metadata.name of the referenced
- config map
- type: string
- required:
- - name
- type: object
- issuerURL:
- description: |-
- issuerURL is a required field that configures the URL used to issue tokens
- by the identity provider.
- The Kubernetes API server determines how authentication tokens should be handled
- by matching the 'iss' claim in the JWT to the issuerURL of configured identity providers.
-
- Must be at least 1 character and must not exceed 512 characters in length.
- Must be a valid URL that uses the 'https' scheme and does not contain a query, fragment or user.
- maxLength: 512
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must be a valid URL
- rule: isURL(self)
- - message: must use the 'https' scheme
- rule: isURL(self) && url(self).getScheme() == 'https'
- - message: must not have a query
- rule: isURL(self) && url(self).getQuery() == {}
- - message: must not have a fragment
- rule: self.find('#(.+)$') == ''
- - message: must not have user info
- rule: self.find('@') == ''
- required:
- - audiences
- - issuerURL
- type: object
- name:
- description: |-
- name is a required field that configures the unique human-readable identifier
- associated with the identity provider.
- It is used to distinguish between multiple identity providers
- and has no impact on token validation or authentication mechanics.
-
- name must not be an empty string ("").
- minLength: 1
- type: string
- oidcClients:
- description: |-
- oidcClients is an optional field that configures how on-cluster,
- platform clients should request tokens from the identity provider.
- oidcClients must not exceed 20 entries and entries must have unique namespace/name pairs.
- items:
- description: |-
- OIDCClientConfig configures how platform clients
- interact with identity providers as an authentication
- method
- properties:
- clientID:
- description: |-
- clientID is a required field that configures the client identifier, from
- the identity provider, that the platform component uses for authentication
- requests made to the identity provider.
- The identity provider must accept this identifier for platform components
- to be able to use the identity provider as an authentication mode.
-
- clientID must not be an empty string ("").
- minLength: 1
- type: string
- clientSecret:
- description: |-
- clientSecret is an optional field that configures the client secret used
- by the platform component when making authentication requests to the identity provider.
-
- When not specified, no client secret will be used when making authentication requests
- to the identity provider.
-
- When specified, clientSecret references a Secret in the 'openshift-config'
- namespace that contains the client secret in the 'clientSecret' key of the '.data' field.
- The client secret will be used when making authentication requests to the identity provider.
-
- Public clients do not require a client secret but private
- clients do require a client secret to work with the identity provider.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component being configured to use the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component being configured to use the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- extraScopes:
- description: |-
- extraScopes is an optional field that configures the extra scopes that should
- be requested by the platform component when making authentication requests to the
- identity provider.
- This is useful if you have configured claim mappings that requires specific
- scopes to be requested beyond the standard OIDC scopes.
-
- When omitted, no additional scopes are requested.
- items:
- type: string
- type: array
- x-kubernetes-list-type: set
- required:
- - clientID
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- required:
- - claimMappings
- - issuer
- - name
- type: object
- maxItems: 1
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- serviceAccountIssuer:
- description: |-
- serviceAccountIssuer is the identifier of the bound service account token
- issuer.
- The default is https://kubernetes.default.svc
- WARNING: Updating this field will not result in immediate invalidation of all bound tokens with the
- previous issuer value. Instead, the tokens issued by previous service account issuer will continue to
- be trusted for a time period chosen by the platform (currently set to 24h).
- This time period is subject to change over time.
- This allows internal components to transition to use new service account issuer without service distruption.
- type: string
- type:
- description: |-
- type identifies the cluster managed, user facing authentication mode in use.
- Specifically, it manages the component that responds to login attempts.
- The default is IntegratedOAuth.
- enum:
- - ""
- - None
- - IntegratedOAuth
- - OIDC
- type: string
- webhookTokenAuthenticator:
- description: |-
- webhookTokenAuthenticator configures a remote token reviewer.
- These remote authentication webhooks can be used to verify bearer tokens
- via the tokenreviews.authentication.k8s.io REST API. This is required to
- honor bearer tokens that are provisioned by an external authentication service.
-
- Can only be set if "Type" is set to "None".
- properties:
- kubeConfig:
- description: |-
- kubeConfig references a secret that contains kube config file data which
- describes how to access the remote webhook service.
- The namespace for the referenced secret is openshift-config.
-
- For further details, see:
-
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
-
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- properties:
- name:
- description: name is the metadata.name of the referenced secret
- type: string
- required:
- - name
- type: object
- required:
- - kubeConfig
- type: object
- webhookTokenAuthenticators:
- description: webhookTokenAuthenticators is DEPRECATED, setting it
- has no effect.
- items:
- description: |-
- deprecatedWebhookTokenAuthenticator holds the necessary configuration options for a remote token authenticator.
- It's the same as WebhookTokenAuthenticator but it's missing the 'required' validation on KubeConfig field.
- properties:
- kubeConfig:
- description: |-
- kubeConfig contains kube config file data which describes how to access the remote webhook service.
- For further details, see:
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- The namespace for this secret is determined by the point of use.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- type: object
- type: array
- x-kubernetes-list-type: atomic
- type: object
- status:
- description: status holds observed values from the cluster. They may not
- be overridden.
- properties:
- integratedOAuthMetadata:
- description: |-
- integratedOAuthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for the in-cluster integrated OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- This contains the observed value based on cluster state.
- An explicitly set value in spec.oauthMetadata has precedence over this field.
- This field has no meaning if authentication spec.type is not set to IntegratedOAuth.
- The key "oauthMetadata" is used to locate the data.
- If the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config-managed.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcClients:
- description: |-
- oidcClients is where participating operators place the current OIDC client status
- for OIDC clients that can be customized by the cluster-admin.
- items:
- description: |-
- OIDCClientStatus represents the current state
- of platform components and how they interact with
- the configured identity providers.
- properties:
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component using the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component using the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- conditions:
- description: |-
- conditions are used to communicate the state of the `oidcClients` entry.
-
- Supported conditions include Available, Degraded and Progressing.
-
- If Available is true, the component is successfully using the configured client.
- If Degraded is true, that means something has gone wrong trying to handle the client configuration.
- If Progressing is true, that means the component is taking some action related to the `oidcClients` entry.
- items:
- description: Condition contains details for one aspect of
- the current state of this API Resource.
- properties:
- lastTransitionTime:
- description: |-
- lastTransitionTime is the last time the condition transitioned from one status to another.
- This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: |-
- message is a human readable message indicating details about the transition.
- This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: |-
- observedGeneration represents the .metadata.generation that the condition was set based upon.
- For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
- with respect to the current state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: |-
- reason contains a programmatic identifier indicating the reason for the condition's last transition.
- Producers of specific condition types may define expected values and meanings for this field,
- and whether the values are considered a guaranteed API.
- The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False,
- Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - type
- x-kubernetes-list-type: map
- consumingUsers:
- description: |-
- consumingUsers is an optional list of ServiceAccounts requiring
- read permissions on the `clientSecret` secret.
-
- consumingUsers must not exceed 5 entries.
- items:
- description: ConsumingUser is an alias for string which we
- add validation to. Currently only service accounts are supported.
- maxLength: 512
- minLength: 1
- pattern: ^system:serviceaccount:[a-z0-9]([-a-z0-9]*[a-z0-9])?:[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- type: string
- maxItems: 5
- type: array
- x-kubernetes-list-type: set
- currentOIDCClients:
- description: |-
- currentOIDCClients is an optional list of clients that the component is currently using.
- Entries must have unique issuerURL/clientID pairs.
- items:
- description: |-
- OIDCClientReference is a reference to a platform component
- client configuration.
- properties:
- clientID:
- description: |-
- clientID is a required field that specifies the client identifier, from
- the identity provider, that the platform component is using for authentication
- requests made to the identity provider.
-
- clientID must not be empty.
- minLength: 1
- type: string
- issuerURL:
- description: |-
- issuerURL is a required field that specifies the URL of the identity
- provider that this client is configured to make requests against.
-
- issuerURL must use the 'https' scheme.
- pattern: ^https:\/\/[^\s]
- type: string
- oidcProviderName:
- description: |-
- oidcProviderName is a required reference to the 'name' of the identity provider
- configured in 'oidcProviders' that this client is associated with.
-
- oidcProviderName must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - clientID
- - issuerURL
- - oidcProviderName
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - issuerURL
- - clientID
- x-kubernetes-list-type: map
- required:
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- type: object
- required:
- - spec
- type: object
- x-kubernetes-validations:
- - message: all oidcClients in the oidcProviders must match their componentName
- and componentNamespace to either a previously configured oidcClient or
- they must exist in the status.oidcClients
- rule: '!has(self.spec.oidcProviders) || self.spec.oidcProviders.all(p, !has(p.oidcClients)
- || p.oidcClients.all(specC, self.status.oidcClients.exists(statusC, statusC.componentNamespace
- == specC.componentNamespace && statusC.componentName == specC.componentName)
- || (has(oldSelf.spec.oidcProviders) && oldSelf.spec.oidcProviders.exists(oldP,
- oldP.name == p.name && has(oldP.oidcClients) && oldP.oidcClients.exists(oldC,
- oldC.componentNamespace == specC.componentNamespace && oldC.componentName
- == specC.componentName)))))'
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-Default.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-Default.crd.yaml
deleted file mode 100644
index 5979653555..0000000000
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-Default.crd.yaml
+++ /dev/null
@@ -1,187 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- api-approved.openshift.io: https://github.com/openshift/api/pull/470
- api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/self-managed-high-availability: "true"
- release.openshift.io/bootstrap-required: "true"
- release.openshift.io/feature-set: Default
- name: authentications.config.openshift.io
-spec:
- group: config.openshift.io
- names:
- kind: Authentication
- listKind: AuthenticationList
- plural: authentications
- singular: authentication
- scope: Cluster
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: |-
- Authentication specifies cluster-wide settings for authentication (like OAuth and
- webhook token authenticators). The canonical name of an instance is `cluster`.
-
- Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
- properties:
- apiVersion:
- description: |-
- APIVersion defines the versioned schema of this representation of an object.
- Servers should convert recognized schemas to the latest internal value, and
- may reject unrecognized values.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- type: string
- kind:
- description: |-
- Kind is a string value representing the REST resource this object represents.
- Servers may infer this from the endpoint the client submits requests to.
- Cannot be updated.
- In CamelCase.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- type: string
- metadata:
- type: object
- spec:
- description: spec holds user settable values for configuration
- properties:
- oauthMetadata:
- description: |-
- oauthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for an external OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- If oauthMetadata.name is non-empty, this value has precedence
- over any metadata reference stored in status.
- The key "oauthMetadata" is used to locate the data.
- If specified and the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- serviceAccountIssuer:
- description: |-
- serviceAccountIssuer is the identifier of the bound service account token
- issuer.
- The default is https://kubernetes.default.svc
- WARNING: Updating this field will not result in immediate invalidation of all bound tokens with the
- previous issuer value. Instead, the tokens issued by previous service account issuer will continue to
- be trusted for a time period chosen by the platform (currently set to 24h).
- This time period is subject to change over time.
- This allows internal components to transition to use new service account issuer without service distruption.
- type: string
- type:
- description: |-
- type identifies the cluster managed, user facing authentication mode in use.
- Specifically, it manages the component that responds to login attempts.
- The default is IntegratedOAuth.
- enum:
- - ""
- - None
- - IntegratedOAuth
- type: string
- webhookTokenAuthenticator:
- description: |-
- webhookTokenAuthenticator configures a remote token reviewer.
- These remote authentication webhooks can be used to verify bearer tokens
- via the tokenreviews.authentication.k8s.io REST API. This is required to
- honor bearer tokens that are provisioned by an external authentication service.
-
- Can only be set if "Type" is set to "None".
- properties:
- kubeConfig:
- description: |-
- kubeConfig references a secret that contains kube config file data which
- describes how to access the remote webhook service.
- The namespace for the referenced secret is openshift-config.
-
- For further details, see:
-
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
-
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- properties:
- name:
- description: name is the metadata.name of the referenced secret
- type: string
- required:
- - name
- type: object
- required:
- - kubeConfig
- type: object
- webhookTokenAuthenticators:
- description: webhookTokenAuthenticators is DEPRECATED, setting it
- has no effect.
- items:
- description: |-
- deprecatedWebhookTokenAuthenticator holds the necessary configuration options for a remote token authenticator.
- It's the same as WebhookTokenAuthenticator but it's missing the 'required' validation on KubeConfig field.
- properties:
- kubeConfig:
- description: |-
- kubeConfig contains kube config file data which describes how to access the remote webhook service.
- For further details, see:
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- The namespace for this secret is determined by the point of use.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- type: object
- type: array
- x-kubernetes-list-type: atomic
- type: object
- status:
- description: status holds observed values from the cluster. They may not
- be overridden.
- properties:
- integratedOAuthMetadata:
- description: |-
- integratedOAuthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for the in-cluster integrated OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- This contains the observed value based on cluster state.
- An explicitly set value in spec.oauthMetadata has precedence over this field.
- This field has no meaning if authentication spec.type is not set to IntegratedOAuth.
- The key "oauthMetadata" is used to locate the data.
- If the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config-managed.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- type: object
- required:
- - spec
- type: object
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml
deleted file mode 100644
index 75446be6cc..0000000000
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml
+++ /dev/null
@@ -1,870 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- api-approved.openshift.io: https://github.com/openshift/api/pull/470
- api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/self-managed-high-availability: "true"
- release.openshift.io/bootstrap-required: "true"
- release.openshift.io/feature-set: TechPreviewNoUpgrade
- name: authentications.config.openshift.io
-spec:
- group: config.openshift.io
- names:
- kind: Authentication
- listKind: AuthenticationList
- plural: authentications
- singular: authentication
- scope: Cluster
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: |-
- Authentication specifies cluster-wide settings for authentication (like OAuth and
- webhook token authenticators). The canonical name of an instance is `cluster`.
-
- Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
- properties:
- apiVersion:
- description: |-
- APIVersion defines the versioned schema of this representation of an object.
- Servers should convert recognized schemas to the latest internal value, and
- may reject unrecognized values.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- type: string
- kind:
- description: |-
- Kind is a string value representing the REST resource this object represents.
- Servers may infer this from the endpoint the client submits requests to.
- Cannot be updated.
- In CamelCase.
- More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- type: string
- metadata:
- type: object
- spec:
- description: spec holds user settable values for configuration
- properties:
- oauthMetadata:
- description: |-
- oauthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for an external OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- If oauthMetadata.name is non-empty, this value has precedence
- over any metadata reference stored in status.
- The key "oauthMetadata" is used to locate the data.
- If specified and the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcProviders:
- description: |-
- oidcProviders are OIDC identity providers that can issue tokens
- for this cluster
- Can only be set if "Type" is set to "OIDC".
-
- At most one provider can be configured.
- items:
- properties:
- claimMappings:
- description: |-
- claimMappings is a required field that configures the rules to be used by
- the Kubernetes API server for translating claims in a JWT token, issued
- by the identity provider, to a cluster identity.
- properties:
- extra:
- description: |-
- extra is an optional field for configuring the mappings
- used to construct the extra attribute for the cluster identity.
- When omitted, no extra attributes will be present on the cluster identity.
- key values for extra mappings must be unique.
- A maximum of 32 extra attribute mappings may be provided.
- items:
- description: |-
- ExtraMapping allows specifying a key and CEL expression
- to evaluate the keys' value. It is used to create additional
- mappings and attributes added to a cluster identity from
- a provided authentication token.
- properties:
- key:
- description: |-
- key is a required field that specifies the string
- to use as the extra attribute key.
-
- key must be a domain-prefix path (e.g 'example.org/foo').
- key must not exceed 510 characters in length.
- key must contain the '/' character, separating the domain and path characters.
- key must not be empty.
-
- The domain portion of the key (string of characters prior to the '/') must be a valid RFC1123 subdomain.
- It must not exceed 253 characters in length.
- It must start and end with an alphanumeric character.
- It must only contain lower case alphanumeric characters and '-' or '.'.
- It must not use the reserved domains, or be subdomains of, "kubernetes.io", "k8s.io", and "openshift.io".
-
- The path portion of the key (string of characters after the '/') must not be empty and must consist of at least one
- alphanumeric character, percent-encoded octets, '-', '.', '_', '~', '!', '$', '&', ''', '(', ')', '*', '+', ',', ';', '=', and ':'.
- It must not exceed 256 characters in length.
- maxLength: 510
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: key must contain the '/' character
- rule: self.contains('/')
- - message: the domain of the key must consist of only
- lower case alphanumeric characters, '-' or '.',
- and must start and end with an alphanumeric character
- rule: self.split('/', 2)[0].matches("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$")
- - message: the domain of the key must not exceed 253
- characters in length
- rule: self.split('/', 2)[0].size() <= 253
- - message: the domain 'kubernetes.io' is reserved
- for Kubernetes use
- rule: self.split('/', 2)[0] != 'kubernetes.io'
- - message: the subdomains '*.kubernetes.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.kubernetes.io'')'
- - message: the domain 'k8s.io' is reserved for Kubernetes
- use
- rule: self.split('/', 2)[0] != 'k8s.io'
- - message: the subdomains '*.k8s.io' are reserved
- for Kubernetes use
- rule: '!self.split(''/'', 2)[0].endsWith(''.k8s.io'')'
- - message: the domain 'openshift.io' is reserved for
- OpenShift use
- rule: self.split('/', 2)[0] != 'openshift.io'
- - message: the subdomains '*.openshift.io' are reserved
- for OpenShift use
- rule: '!self.split(''/'', 2)[0].endsWith(''.openshift.io'')'
- - message: the path of the key must not be empty and
- must consist of at least one alphanumeric character,
- percent-encoded octets, apostrophe, '-', '.',
- '_', '~', '!', '$', '&', '(', ')', '*', '+', ',',
- ';', '=', and ':'
- rule: self.split('/', 2)[1].matches('[A-Za-z0-9/\\-._~%!$&\'()*+;=:]+')
- - message: the path of the key must not exceed 256
- characters in length
- rule: self.split('/', 2)[1].size() <= 256
- valueExpression:
- description: |-
- valueExpression is a required field to specify the CEL expression to extract
- the extra attribute value from a JWT token's claims.
- valueExpression must produce a string or string array value.
- "", [], and null are treated as the extra mapping not being present.
- Empty string values within an array are filtered out.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- valueExpression must not exceed 1024 characters in length.
- valueExpression must not be empty.
- maxLength: 1024
- minLength: 1
- type: string
- required:
- - key
- - valueExpression
- type: object
- maxItems: 32
- type: array
- x-kubernetes-list-map-keys:
- - key
- x-kubernetes-list-type: map
- groups:
- description: |-
- groups is an optional field that configures how the groups of a cluster identity
- should be constructed from the claims in a JWT token issued
- by the identity provider.
- When referencing a claim, if the claim is present in the JWT
- token, its value must be a list of groups separated by a comma (',').
- For example - '"example"' and '"exampleOne", "exampleTwo", "exampleThree"' are valid claim values.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
- type: string
- prefix:
- description: |-
- prefix is an optional field that configures the prefix that will be
- applied to the cluster identity attribute during the process of mapping
- JWT claims to cluster identity attributes.
-
- When omitted (""), no prefix is applied to the cluster identity attribute.
-
- Example: if `prefix` is set to "myoidc:" and the `claim` in JWT contains
- an array of strings "a", "b" and "c", the mapping will result in an
- array of string "myoidc:a", "myoidc:b" and "myoidc:c".
- type: string
- required:
- - claim
- type: object
- uid:
- description: |-
- uid is an optional field for configuring the claim mapping
- used to construct the uid for the cluster identity.
-
- When using uid.claim to specify the claim it must be a single string value.
- When using uid.expression the expression must result in a single string value.
-
- When omitted, this means the user has no opinion and the platform
- is left to choose a default, which is subject to change over time.
- The current default is to use the 'sub' claim.
- properties:
- claim:
- description: |-
- claim is an optional field for specifying the
- JWT token claim that is used in the mapping.
- The value of this claim will be assigned to
- the field in which this mapping is associated.
-
- Precisely one of claim or expression must be set.
- claim must not be specified when expression is set.
- When specified, claim must be at least 1 character in length
- and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- expression:
- description: |-
- expression is an optional field for specifying a
- CEL expression that produces a string value from
- JWT token claims.
-
- CEL expressions have access to the token claims
- through a CEL variable, 'claims'.
- 'claims' is a map of claim names to claim values.
- For example, the 'sub' claim value can be accessed as 'claims.sub'.
- Nested claims can be accessed using dot notation ('claims.foo.bar').
-
- Precisely one of claim or expression must be set.
- expression must not be specified when claim is set.
- When specified, expression must be at least 1 character in length
- and must not exceed 1024 characters in length.
- maxLength: 1024
- minLength: 1
- type: string
- type: object
- x-kubernetes-validations:
- - message: precisely one of claim or expression must be
- set
- rule: 'has(self.claim) ? !has(self.expression) : has(self.expression)'
- username:
- description: |-
- username is a required field that configures how the username of a cluster identity
- should be constructed from the claims in a JWT token issued by the identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the JWT token
- claim whose value is assigned to the cluster identity
- field associated with this mapping.
-
- claim must not be an empty string ("") and must not exceed 256 characters.
- maxLength: 256
- minLength: 1
- type: string
- prefix:
- description: |-
- prefix configures the prefix that should be prepended to the value
- of the JWT claim.
-
- prefix must be set when prefixPolicy is set to 'Prefix' and must be unset otherwise.
- properties:
- prefixString:
- description: |-
- prefixString is a required field that configures the prefix that will
- be applied to cluster identity username attribute
- during the process of mapping JWT claims to cluster identity attributes.
-
- prefixString must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - prefixString
- type: object
- prefixPolicy:
- description: |-
- prefixPolicy is an optional field that configures how a prefix should be
- applied to the value of the JWT claim specified in the 'claim' field.
-
- Allowed values are 'Prefix', 'NoPrefix', and omitted (not provided or an empty string).
-
- When set to 'Prefix', the value specified in the prefix field will be
- prepended to the value of the JWT claim.
- The prefix field must be set when prefixPolicy is 'Prefix'.
-
- When set to 'NoPrefix', no prefix will be prepended to the value
- of the JWT claim.
-
- When omitted, this means no opinion and the platform is left to choose
- any prefixes that are applied which is subject to change over time.
- Currently, the platform prepends `{issuerURL}#` to the value of the JWT claim
- when the claim is not 'email'.
- As an example, consider the following scenario:
- `prefix` is unset, `issuerURL` is set to `https://myoidc.tld`,
- the JWT claims include "username":"userA" and "email":"userA@myoidc.tld",
- and `claim` is set to:
- - "username": the mapped value will be "https://myoidc.tld#userA"
- - "email": the mapped value will be "userA@myoidc.tld"
- enum:
- - ""
- - NoPrefix
- - Prefix
- type: string
- required:
- - claim
- type: object
- x-kubernetes-validations:
- - message: prefix must be set if prefixPolicy is 'Prefix',
- but must remain unset otherwise
- rule: 'has(self.prefixPolicy) && self.prefixPolicy ==
- ''Prefix'' ? (has(self.prefix) && size(self.prefix.prefixString)
- > 0) : !has(self.prefix)'
- required:
- - username
- type: object
- claimValidationRules:
- description: |-
- claimValidationRules is an optional field that configures the rules to
- be used by the Kubernetes API server for validating the claims in a JWT
- token issued by the identity provider.
-
- Validation rules are joined via an AND operation.
- items:
- properties:
- requiredClaim:
- description: |-
- requiredClaim is an optional field that configures the required claim
- and value that the Kubernetes API server will use to validate if an incoming
- JWT is valid for this identity provider.
- properties:
- claim:
- description: |-
- claim is a required field that configures the name of the required claim.
- When taken from the JWT claims, claim must be a string value.
-
- claim must not be an empty string ("").
- minLength: 1
- type: string
- requiredValue:
- description: |-
- requiredValue is a required field that configures the value that 'claim' must
- have when taken from the incoming JWT claims.
- If the value in the JWT claims does not match, the token
- will be rejected for authentication.
-
- requiredValue must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - claim
- - requiredValue
- type: object
- type:
- default: RequiredClaim
- description: |-
- type is an optional field that configures the type of the validation rule.
-
- Allowed values are 'RequiredClaim' and omitted (not provided or an empty string).
-
- When set to 'RequiredClaim', the Kubernetes API server
- will be configured to validate that the incoming JWT
- contains the required claim and that its value matches
- the required value.
-
- Defaults to 'RequiredClaim'.
- enum:
- - RequiredClaim
- type: string
- type: object
- type: array
- x-kubernetes-list-type: atomic
- issuer:
- description: |-
- issuer is a required field that configures how the platform interacts
- with the identity provider and how tokens issued from the identity provider
- are evaluated by the Kubernetes API server.
- properties:
- audiences:
- description: |-
- audiences is a required field that configures the acceptable audiences
- the JWT token, issued by the identity provider, must be issued to.
- At least one of the entries must match the 'aud' claim in the JWT token.
-
- audiences must contain at least one entry and must not exceed ten entries.
- items:
- minLength: 1
- type: string
- maxItems: 10
- minItems: 1
- type: array
- x-kubernetes-list-type: set
- issuerCertificateAuthority:
- description: |-
- issuerCertificateAuthority is an optional field that configures the
- certificate authority, used by the Kubernetes API server, to validate
- the connection to the identity provider when fetching discovery information.
-
- When not specified, the system trust is used.
-
- When specified, it must reference a ConfigMap in the openshift-config
- namespace containing the PEM-encoded CA certificates under the 'ca-bundle.crt'
- key in the data field of the ConfigMap.
- properties:
- name:
- description: name is the metadata.name of the referenced
- config map
- type: string
- required:
- - name
- type: object
- issuerURL:
- description: |-
- issuerURL is a required field that configures the URL used to issue tokens
- by the identity provider.
- The Kubernetes API server determines how authentication tokens should be handled
- by matching the 'iss' claim in the JWT to the issuerURL of configured identity providers.
-
- Must be at least 1 character and must not exceed 512 characters in length.
- Must be a valid URL that uses the 'https' scheme and does not contain a query, fragment or user.
- maxLength: 512
- minLength: 1
- type: string
- x-kubernetes-validations:
- - message: must be a valid URL
- rule: isURL(self)
- - message: must use the 'https' scheme
- rule: isURL(self) && url(self).getScheme() == 'https'
- - message: must not have a query
- rule: isURL(self) && url(self).getQuery() == {}
- - message: must not have a fragment
- rule: self.find('#(.+)$') == ''
- - message: must not have user info
- rule: self.find('@') == ''
- required:
- - audiences
- - issuerURL
- type: object
- name:
- description: |-
- name is a required field that configures the unique human-readable identifier
- associated with the identity provider.
- It is used to distinguish between multiple identity providers
- and has no impact on token validation or authentication mechanics.
-
- name must not be an empty string ("").
- minLength: 1
- type: string
- oidcClients:
- description: |-
- oidcClients is an optional field that configures how on-cluster,
- platform clients should request tokens from the identity provider.
- oidcClients must not exceed 20 entries and entries must have unique namespace/name pairs.
- items:
- description: |-
- OIDCClientConfig configures how platform clients
- interact with identity providers as an authentication
- method
- properties:
- clientID:
- description: |-
- clientID is a required field that configures the client identifier, from
- the identity provider, that the platform component uses for authentication
- requests made to the identity provider.
- The identity provider must accept this identifier for platform components
- to be able to use the identity provider as an authentication mode.
-
- clientID must not be an empty string ("").
- minLength: 1
- type: string
- clientSecret:
- description: |-
- clientSecret is an optional field that configures the client secret used
- by the platform component when making authentication requests to the identity provider.
-
- When not specified, no client secret will be used when making authentication requests
- to the identity provider.
-
- When specified, clientSecret references a Secret in the 'openshift-config'
- namespace that contains the client secret in the 'clientSecret' key of the '.data' field.
- The client secret will be used when making authentication requests to the identity provider.
-
- Public clients do not require a client secret but private
- clients do require a client secret to work with the identity provider.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component being configured to use the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component being configured to use the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- extraScopes:
- description: |-
- extraScopes is an optional field that configures the extra scopes that should
- be requested by the platform component when making authentication requests to the
- identity provider.
- This is useful if you have configured claim mappings that requires specific
- scopes to be requested beyond the standard OIDC scopes.
-
- When omitted, no additional scopes are requested.
- items:
- type: string
- type: array
- x-kubernetes-list-type: set
- required:
- - clientID
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- required:
- - claimMappings
- - issuer
- - name
- type: object
- maxItems: 1
- type: array
- x-kubernetes-list-map-keys:
- - name
- x-kubernetes-list-type: map
- serviceAccountIssuer:
- description: |-
- serviceAccountIssuer is the identifier of the bound service account token
- issuer.
- The default is https://kubernetes.default.svc
- WARNING: Updating this field will not result in immediate invalidation of all bound tokens with the
- previous issuer value. Instead, the tokens issued by previous service account issuer will continue to
- be trusted for a time period chosen by the platform (currently set to 24h).
- This time period is subject to change over time.
- This allows internal components to transition to use new service account issuer without service distruption.
- type: string
- type:
- description: |-
- type identifies the cluster managed, user facing authentication mode in use.
- Specifically, it manages the component that responds to login attempts.
- The default is IntegratedOAuth.
- enum:
- - ""
- - None
- - IntegratedOAuth
- - OIDC
- type: string
- webhookTokenAuthenticator:
- description: |-
- webhookTokenAuthenticator configures a remote token reviewer.
- These remote authentication webhooks can be used to verify bearer tokens
- via the tokenreviews.authentication.k8s.io REST API. This is required to
- honor bearer tokens that are provisioned by an external authentication service.
-
- Can only be set if "Type" is set to "None".
- properties:
- kubeConfig:
- description: |-
- kubeConfig references a secret that contains kube config file data which
- describes how to access the remote webhook service.
- The namespace for the referenced secret is openshift-config.
-
- For further details, see:
-
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
-
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- properties:
- name:
- description: name is the metadata.name of the referenced secret
- type: string
- required:
- - name
- type: object
- required:
- - kubeConfig
- type: object
- webhookTokenAuthenticators:
- description: webhookTokenAuthenticators is DEPRECATED, setting it
- has no effect.
- items:
- description: |-
- deprecatedWebhookTokenAuthenticator holds the necessary configuration options for a remote token authenticator.
- It's the same as WebhookTokenAuthenticator but it's missing the 'required' validation on KubeConfig field.
- properties:
- kubeConfig:
- description: |-
- kubeConfig contains kube config file data which describes how to access the remote webhook service.
- For further details, see:
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
- The key "kubeConfig" is used to locate the data.
- If the secret or expected key is not found, the webhook is not honored.
- If the specified kube config data is not valid, the webhook is not honored.
- The namespace for this secret is determined by the point of use.
- properties:
- name:
- description: name is the metadata.name of the referenced
- secret
- type: string
- required:
- - name
- type: object
- type: object
- type: array
- x-kubernetes-list-type: atomic
- type: object
- status:
- description: status holds observed values from the cluster. They may not
- be overridden.
- properties:
- integratedOAuthMetadata:
- description: |-
- integratedOAuthMetadata contains the discovery endpoint data for OAuth 2.0
- Authorization Server Metadata for the in-cluster integrated OAuth server.
- This discovery document can be viewed from its served location:
- oc get --raw '/.well-known/oauth-authorization-server'
- For further details, see the IETF Draft:
- https://tools.ietf.org/html/draft-ietf-oauth-discovery-04#section-2
- This contains the observed value based on cluster state.
- An explicitly set value in spec.oauthMetadata has precedence over this field.
- This field has no meaning if authentication spec.type is not set to IntegratedOAuth.
- The key "oauthMetadata" is used to locate the data.
- If the config map or expected key is not found, no metadata is served.
- If the specified metadata is not valid, no metadata is served.
- The namespace for this config map is openshift-config-managed.
- properties:
- name:
- description: name is the metadata.name of the referenced config
- map
- type: string
- required:
- - name
- type: object
- oidcClients:
- description: |-
- oidcClients is where participating operators place the current OIDC client status
- for OIDC clients that can be customized by the cluster-admin.
- items:
- description: |-
- OIDCClientStatus represents the current state
- of platform components and how they interact with
- the configured identity providers.
- properties:
- componentName:
- description: |-
- componentName is a required field that specifies the name of the platform
- component using the identity provider as an authentication mode.
- It is used in combination with componentNamespace as a unique identifier.
-
- componentName must not be an empty string ("") and must not exceed 256 characters in length.
- maxLength: 256
- minLength: 1
- type: string
- componentNamespace:
- description: |-
- componentNamespace is a required field that specifies the namespace in which the
- platform component using the identity provider as an authentication
- mode is running.
- It is used in combination with componentName as a unique identifier.
-
- componentNamespace must not be an empty string ("") and must not exceed 63 characters in length.
- maxLength: 63
- minLength: 1
- type: string
- conditions:
- description: |-
- conditions are used to communicate the state of the `oidcClients` entry.
-
- Supported conditions include Available, Degraded and Progressing.
-
- If Available is true, the component is successfully using the configured client.
- If Degraded is true, that means something has gone wrong trying to handle the client configuration.
- If Progressing is true, that means the component is taking some action related to the `oidcClients` entry.
- items:
- description: Condition contains details for one aspect of
- the current state of this API Resource.
- properties:
- lastTransitionTime:
- description: |-
- lastTransitionTime is the last time the condition transitioned from one status to another.
- This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: |-
- message is a human readable message indicating details about the transition.
- This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: |-
- observedGeneration represents the .metadata.generation that the condition was set based upon.
- For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
- with respect to the current state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: |-
- reason contains a programmatic identifier indicating the reason for the condition's last transition.
- Producers of specific condition types may define expected values and meanings for this field,
- and whether the values are considered a guaranteed API.
- The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False,
- Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - type
- x-kubernetes-list-type: map
- consumingUsers:
- description: |-
- consumingUsers is an optional list of ServiceAccounts requiring
- read permissions on the `clientSecret` secret.
-
- consumingUsers must not exceed 5 entries.
- items:
- description: ConsumingUser is an alias for string which we
- add validation to. Currently only service accounts are supported.
- maxLength: 512
- minLength: 1
- pattern: ^system:serviceaccount:[a-z0-9]([-a-z0-9]*[a-z0-9])?:[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- type: string
- maxItems: 5
- type: array
- x-kubernetes-list-type: set
- currentOIDCClients:
- description: |-
- currentOIDCClients is an optional list of clients that the component is currently using.
- Entries must have unique issuerURL/clientID pairs.
- items:
- description: |-
- OIDCClientReference is a reference to a platform component
- client configuration.
- properties:
- clientID:
- description: |-
- clientID is a required field that specifies the client identifier, from
- the identity provider, that the platform component is using for authentication
- requests made to the identity provider.
-
- clientID must not be empty.
- minLength: 1
- type: string
- issuerURL:
- description: |-
- issuerURL is a required field that specifies the URL of the identity
- provider that this client is configured to make requests against.
-
- issuerURL must use the 'https' scheme.
- pattern: ^https:\/\/[^\s]
- type: string
- oidcProviderName:
- description: |-
- oidcProviderName is a required reference to the 'name' of the identity provider
- configured in 'oidcProviders' that this client is associated with.
-
- oidcProviderName must not be an empty string ("").
- minLength: 1
- type: string
- required:
- - clientID
- - issuerURL
- - oidcProviderName
- type: object
- type: array
- x-kubernetes-list-map-keys:
- - issuerURL
- - clientID
- x-kubernetes-list-type: map
- required:
- - componentName
- - componentNamespace
- type: object
- maxItems: 20
- type: array
- x-kubernetes-list-map-keys:
- - componentNamespace
- - componentName
- x-kubernetes-list-type: map
- type: object
- required:
- - spec
- type: object
- x-kubernetes-validations:
- - message: all oidcClients in the oidcProviders must match their componentName
- and componentNamespace to either a previously configured oidcClient or
- they must exist in the status.oidcClients
- rule: '!has(self.spec.oidcProviders) || self.spec.oidcProviders.all(p, !has(p.oidcClients)
- || p.oidcClients.all(specC, self.status.oidcClients.exists(statusC, statusC.componentNamespace
- == specC.componentNamespace && statusC.componentName == specC.componentName)
- || (has(oldSelf.spec.oidcProviders) && oldSelf.spec.oidcProviders.exists(oldP,
- oldP.name == p.name && has(oldP.oidcClients) && oldP.oidcClients.exists(oldC,
- oldC.componentNamespace == specC.componentNamespace && oldC.componentName
- == specC.componentName)))))'
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications.crd.yaml
similarity index 99%
rename from vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
rename to vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications.crd.yaml
index 998e804191..d6e1cf0849 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_authentications.crd.yaml
@@ -4,9 +4,9 @@ metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/470
api.openshift.io/merged-by-featuregates: "true"
+ include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/bootstrap-required: "true"
- release.openshift.io/feature-set: DevPreviewNoUpgrade
name: authentications.config.openshift.io
spec:
group: config.openshift.io
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml
index b8d0b7b765..9f01a6aebd 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml
@@ -229,7 +229,7 @@ spec:
serviceEndpoints is a list of custom endpoints which will override the default
service endpoints of an IBM service. These endpoints are used by components
within the cluster when trying to reach the IBM Cloud Services that have been
- overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
+ overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus
are updated to reflect the same custom endpoints.
A maximum of 13 service endpoints overrides are supported.
@@ -2095,7 +2095,7 @@ spec:
serviceEndpoints is a list of custom endpoints which will override the default
service endpoints of an IBM service. These endpoints are used by components
within the cluster when trying to reach the IBM Cloud Services that have been
- overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
+ overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus
are updated to reflect the same custom endpoints.
items:
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml
index 1ae221ca45..4ecbc18e96 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml
@@ -1493,6 +1493,110 @@ spec:
description: gcp contains settings specific to the Google Cloud
Platform infrastructure provider.
properties:
+ cloudLoadBalancerConfig:
+ default:
+ dnsType: PlatformDefault
+ description: |-
+ cloudLoadBalancerConfig holds configuration related to DNS and cloud
+ load balancers. It allows configuration of in-cluster DNS as an alternative
+ to the platform default DNS implementation.
+ When using the ClusterHosted DNS type, Load Balancer IP addresses
+ must be provided for the API and internal API load balancers as well as the
+ ingress load balancer.
+ nullable: true
+ properties:
+ clusterHosted:
+ description: |-
+ clusterHosted holds the IP addresses of API, API-Int and Ingress Load
+ Balancers on Cloud Platforms. The DNS solution hosted within the cluster
+ use these IP addresses to provide resolution for API, API-Int and Ingress
+ services.
+ properties:
+ apiIntLoadBalancerIPs:
+ description: |-
+ apiIntLoadBalancerIPs holds Load Balancer IPs for the internal API service.
+ These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses.
+ Entries in the apiIntLoadBalancerIPs must be unique.
+ A maximum of 16 IP addresses are permitted.
+ format: ip
+ items:
+ description: IP is an IP address (for example, "10.0.0.0"
+ or "fd00::").
+ maxLength: 39
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: value must be a valid IP address
+ rule: isIP(self)
+ maxItems: 16
+ type: array
+ x-kubernetes-list-type: set
+ apiLoadBalancerIPs:
+ description: |-
+ apiLoadBalancerIPs holds Load Balancer IPs for the API service.
+ These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses.
+ Could be empty for private clusters.
+ Entries in the apiLoadBalancerIPs must be unique.
+ A maximum of 16 IP addresses are permitted.
+ format: ip
+ items:
+ description: IP is an IP address (for example, "10.0.0.0"
+ or "fd00::").
+ maxLength: 39
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: value must be a valid IP address
+ rule: isIP(self)
+ maxItems: 16
+ type: array
+ x-kubernetes-list-type: set
+ ingressLoadBalancerIPs:
+ description: |-
+ ingressLoadBalancerIPs holds IPs for Ingress Load Balancers.
+ These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses.
+ Entries in the ingressLoadBalancerIPs must be unique.
+ A maximum of 16 IP addresses are permitted.
+ format: ip
+ items:
+ description: IP is an IP address (for example, "10.0.0.0"
+ or "fd00::").
+ maxLength: 39
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: value must be a valid IP address
+ rule: isIP(self)
+ maxItems: 16
+ type: array
+ x-kubernetes-list-type: set
+ type: object
+ dnsType:
+ default: PlatformDefault
+ description: |-
+ dnsType indicates the type of DNS solution in use within the cluster. Its default value of
+ `PlatformDefault` indicates that the cluster's DNS is the default provided by the cloud platform.
+ It can be set to `ClusterHosted` to bypass the configuration of the cloud default DNS. In this mode,
+ the cluster needs to provide a self-hosted DNS solution for the cluster's installation to succeed.
+ The cluster's use of the cloud's Load Balancers is unaffected by this setting.
+ The value is immutable after it has been set at install time.
+ Currently, there is no way for the customer to add additional DNS entries into the cluster hosted DNS.
+ Enabling this functionality allows the user to start their own DNS solution outside the cluster after
+ installation is complete. The customer would be responsible for configuring this custom DNS solution,
+ and it can be run in addition to the in-cluster DNS solution.
+ enum:
+ - ClusterHosted
+ - PlatformDefault
+ type: string
+ x-kubernetes-validations:
+ - message: dnsType is immutable
+ rule: oldSelf == '' || self == oldSelf
+ type: object
+ x-kubernetes-validations:
+ - message: clusterHosted is permitted only when dnsType is
+ ClusterHosted
+ rule: 'has(self.dnsType) && self.dnsType != ''ClusterHosted''
+ ? !has(self.clusterHosted) : true'
projectID:
description: resourceGroupName is the Project ID for new GCP
resources created for the cluster.
@@ -1638,7 +1742,7 @@ spec:
serviceEndpoints is a list of custom endpoints which will override the default
service endpoints of an IBM service. These endpoints are used by components
within the cluster when trying to reach the IBM Cloud Services that have been
- overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
+ overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus
are updated to reflect the same custom endpoints.
items:
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml
index bf96f8f2e5..44185f514e 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml
@@ -229,7 +229,7 @@ spec:
serviceEndpoints is a list of custom endpoints which will override the default
service endpoints of an IBM service. These endpoints are used by components
within the cluster when trying to reach the IBM Cloud Services that have been
- overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
+ overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus
are updated to reflect the same custom endpoints.
A maximum of 13 service endpoints overrides are supported.
@@ -2095,7 +2095,7 @@ spec:
serviceEndpoints is a list of custom endpoints which will override the default
service endpoints of an IBM service. These endpoints are used by components
within the cluster when trying to reach the IBM Cloud Services that have been
- overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
+ overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus
are updated to reflect the same custom endpoints.
items:
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
index 86dd58e48a..27e1ce7b41 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
@@ -229,7 +229,7 @@ spec:
serviceEndpoints is a list of custom endpoints which will override the default
service endpoints of an IBM service. These endpoints are used by components
within the cluster when trying to reach the IBM Cloud Services that have been
- overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
+ overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus
are updated to reflect the same custom endpoints.
A maximum of 13 service endpoints overrides are supported.
@@ -2095,7 +2095,7 @@ spec:
serviceEndpoints is a list of custom endpoints which will override the default
service endpoints of an IBM service. These endpoints are used by components
within the cluster when trying to reach the IBM Cloud Services that have been
- overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
+ overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each
endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus
are updated to reflect the same custom endpoints.
items:
diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.swagger_doc_generated.go b/vendor/github.com/openshift/api/config/v1/zz_generated.swagger_doc_generated.go
index 13ae075da9..e3494151c6 100644
--- a/vendor/github.com/openshift/api/config/v1/zz_generated.swagger_doc_generated.go
+++ b/vendor/github.com/openshift/api/config/v1/zz_generated.swagger_doc_generated.go
@@ -318,7 +318,7 @@ var map_APIServerSpec = map[string]string{
"clientCA": "clientCA references a ConfigMap containing a certificate bundle for the signers that will be recognized for incoming client certificates in addition to the operator managed signers. If this is empty, then only operator managed signers are valid. You usually only have to set this if you have your own PKI you wish to honor client certificates from. The ConfigMap must exist in the openshift-config namespace and contain the following required fields: - ConfigMap.Data[\"ca-bundle.crt\"] - CA bundle.",
"additionalCORSAllowedOrigins": "additionalCORSAllowedOrigins lists additional, user-defined regular expressions describing hosts for which the API server allows access using the CORS headers. This may be needed to access the API and the integrated OAuth server from JavaScript applications. The values are regular expressions that correspond to the Golang regular expression language.",
"encryption": "encryption allows the configuration of encryption of resources at the datastore layer.",
- "tlsSecurityProfile": "tlsSecurityProfile specifies settings for TLS connections for externally exposed servers.\n\nIf unset, a default (which may change between releases) is chosen. Note that only Old, Intermediate and Custom profiles are currently supported, and the maximum available minTLSVersion is VersionTLS12.",
+ "tlsSecurityProfile": "tlsSecurityProfile specifies settings for TLS connections for externally exposed servers.\n\nWhen omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time. The current default is the Intermediate profile.",
"audit": "audit specifies the settings for audit configuration to be applied to all OpenShift-provided API servers in the cluster.",
}
@@ -651,7 +651,7 @@ func (ClusterImagePolicyStatus) SwaggerDoc() map[string]string {
}
var map_ClusterOperator = map[string]string{
- "": "ClusterOperator is the Custom Resource object which holds the current state of an operator. This object is used by operators to convey their state to the rest of the cluster.\n\nCompatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).",
+ "": "ClusterOperator holds the status of a core or optional OpenShift component managed by the Cluster Version Operator (CVO). This object is used by operators to convey their state to the rest of the cluster. Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).",
"metadata": "metadata is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
"spec": "spec holds configuration that could apply to any operator.",
"status": "status holds the information about the state of an operator. It is consistent with status information across the Kubernetes ecosystem.",
@@ -893,7 +893,7 @@ var map_UpdateHistory = map[string]string{
"version": "version is a semantic version identifying the update version. If the requested image does not define a version, or if a failure occurs retrieving the image, this value may be empty.",
"image": "image is a container image location that contains the update. This value is always populated.",
"verified": "verified indicates whether the provided update was properly verified before it was installed. If this is false the cluster may not be trusted. Verified does not cover upgradeable checks that depend on the cluster state at the time when the update target was accepted.",
- "acceptedRisks": "acceptedRisks records risks which were accepted to initiate the update. For example, it may menition an Upgradeable=False or missing signature that was overriden via desiredUpdate.force, or an update that was initiated despite not being in the availableUpdates set of recommended update targets.",
+ "acceptedRisks": "acceptedRisks records risks which were accepted to initiate the update. For example, it may menition an Upgradeable=False or missing signature that was overridden via desiredUpdate.force, or an update that was initiated despite not being in the availableUpdates set of recommended update targets.",
}
func (UpdateHistory) SwaggerDoc() map[string]string {
@@ -1653,7 +1653,7 @@ func (GCPServiceEndpoint) SwaggerDoc() map[string]string {
var map_IBMCloudPlatformSpec = map[string]string{
"": "IBMCloudPlatformSpec holds the desired state of the IBMCloud infrastructure provider. This only includes fields that can be modified in the cluster.",
- "serviceEndpoints": "serviceEndpoints is a list of custom endpoints which will override the default service endpoints of an IBM service. These endpoints are used by components within the cluster when trying to reach the IBM Cloud Services that have been overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus are updated to reflect the same custom endpoints. A maximum of 13 service endpoints overrides are supported.",
+ "serviceEndpoints": "serviceEndpoints is a list of custom endpoints which will override the default service endpoints of an IBM service. These endpoints are used by components within the cluster when trying to reach the IBM Cloud Services that have been overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus are updated to reflect the same custom endpoints. A maximum of 13 service endpoints overrides are supported.",
}
func (IBMCloudPlatformSpec) SwaggerDoc() map[string]string {
@@ -1667,7 +1667,7 @@ var map_IBMCloudPlatformStatus = map[string]string{
"providerType": "providerType indicates the type of cluster that was created",
"cisInstanceCRN": "cisInstanceCRN is the CRN of the Cloud Internet Services instance managing the DNS zone for the cluster's base domain",
"dnsInstanceCRN": "dnsInstanceCRN is the CRN of the DNS Services instance managing the DNS zone for the cluster's base domain",
- "serviceEndpoints": "serviceEndpoints is a list of custom endpoints which will override the default service endpoints of an IBM service. These endpoints are used by components within the cluster when trying to reach the IBM Cloud Services that have been overriden. The CCCMO reads in the IBMCloudPlatformSpec and validates each endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus are updated to reflect the same custom endpoints.",
+ "serviceEndpoints": "serviceEndpoints is a list of custom endpoints which will override the default service endpoints of an IBM service. These endpoints are used by components within the cluster when trying to reach the IBM Cloud Services that have been overridden. The CCCMO reads in the IBMCloudPlatformSpec and validates each endpoint is resolvable. Once validated, the cloud config and IBMCloudPlatformStatus are updated to reflect the same custom endpoints.",
}
func (IBMCloudPlatformStatus) SwaggerDoc() map[string]string {
diff --git a/vendor/github.com/openshift/api/config/v1alpha1/types_cluster_monitoring.go b/vendor/github.com/openshift/api/config/v1alpha1/types_cluster_monitoring.go
index c048c64ef1..f6d4cd3420 100644
--- a/vendor/github.com/openshift/api/config/v1alpha1/types_cluster_monitoring.go
+++ b/vendor/github.com/openshift/api/config/v1alpha1/types_cluster_monitoring.go
@@ -81,14 +81,19 @@ type ClusterMonitoringSpec struct {
// When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time.
// The current default value is `Disabled`.
// +optional
- UserDefined *UserDefinedMonitoring `json:"userDefined,omitempty"`
+ UserDefined UserDefinedMonitoring `json:"userDefined,omitempty,omitzero"`
// alertmanagerConfig allows users to configure how the default Alertmanager instance
// should be deployed in the `openshift-monitoring` namespace.
// alertmanagerConfig is optional.
// When omitted, this means no opinion and the platform is left to choose a reasonable default, that is subject to change over time.
// The current default value is `DefaultConfig`.
// +optional
- AlertmanagerConfig *AlertmanagerConfig `json:"alertmanagerConfig,omitempty"`
+ AlertmanagerConfig AlertmanagerConfig `json:"alertmanagerConfig,omitempty,omitzero"`
+ // metricsServerConfig is an optional field that can be used to configure the Kubernetes Metrics Server that runs in the openshift-monitoring namespace.
+ // Specifically, it can configure how the Metrics Server instance is deployed, pod scheduling, its audit policy and log verbosity.
+ // When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time.
+ // +optional
+ MetricsServerConfig MetricsServerConfig `json:"metricsServerConfig,omitempty,omitzero"`
}
// UserDefinedMonitoring config for user-defined projects.
@@ -128,12 +133,12 @@ type AlertmanagerConfig struct {
//
// +unionDiscriminator
// +required
- DeploymentMode AlertManagerDeployMode `json:"deploymentMode"`
+ DeploymentMode AlertManagerDeployMode `json:"deploymentMode,omitempty"`
// customConfig must be set when deploymentMode is CustomConfig, and must be unset otherwise.
// When set to CustomConfig, the Alertmanager will be deployed with custom configuration.
// +optional
- CustomConfig *AlertmanagerCustomConfig `json:"customConfig,omitempty"`
+ CustomConfig AlertmanagerCustomConfig `json:"customConfig,omitempty,omitzero"`
}
// AlertmanagerCustomConfig represents the configuration for a custom Alertmanager deployment.
@@ -153,7 +158,7 @@ type AlertmanagerCustomConfig struct {
// When omitted, this means no opinion and the platform is left to choose a reasonable default, that is subject to change over time.
// The current default value is `Info`.
// +optional
- LogLevel LogLevel `json:"logLevel"`
+ LogLevel LogLevel `json:"logLevel,omitempty"`
// nodeSelector defines the nodes on which the Pods are scheduled
// nodeSelector is optional.
//
@@ -291,9 +296,10 @@ type ContainerResource struct {
// This field is required.
// name must consist only of alphanumeric characters, `-`, `_` and `.` and must start and end with an alphanumeric character.
// +required
+ // +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=253
// +kubebuilder:validation:XValidation:rule="!format.qualifiedName().validate(self).hasValue()",message="name must consist only of alphanumeric characters, `-`, `_` and `.` and must start and end with an alphanumeric character"
- Name string `json:"name"`
+ Name string `json:"name,omitempty"`
// request is the minimum amount of the resource required (e.g. "2Mi", "1Gi").
// This field is optional.
@@ -322,3 +328,135 @@ type ContainerResource struct {
// +kubebuilder:validation:XValidation:rule="!format.dns1123Subdomain().validate(self).hasValue()",message="a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character."
// +kubebuilder:validation:MaxLength=63
type SecretName string
+
+// MetricsServerConfig provides configuration options for the Metrics Server instance
+// that runs in the `openshift-monitoring` namespace. Use this configuration to control
+// how the Metrics Server instance is deployed, how it logs, and how its pods are scheduled.
+// +kubebuilder:validation:MinProperties=1
+type MetricsServerConfig struct {
+ // audit defines the audit configuration used by the Metrics Server instance.
+ // audit is optional.
+ // When omitted, this means no opinion and the platform is left to choose a reasonable default, that is subject to change over time.
+ //The current default sets audit.profile to Metadata
+ // +optional
+ Audit Audit `json:"audit,omitempty,omitzero"`
+ // nodeSelector defines the nodes on which the Pods are scheduled
+ // nodeSelector is optional.
+ //
+ // When omitted, this means the user has no opinion and the platform is left
+ // to choose reasonable defaults. These defaults are subject to change over time.
+ // The current default value is `kubernetes.io/os: linux`.
+ // +optional
+ // +kubebuilder:validation:MinProperties=1
+ // +kubebuilder:validation:MaxProperties=10
+ NodeSelector map[string]string `json:"nodeSelector,omitempty"`
+ // tolerations defines tolerations for the pods.
+ // tolerations is optional.
+ //
+ // When omitted, this means the user has no opinion and the platform is left
+ // to choose reasonable defaults. These defaults are subject to change over time.
+ // Defaults are empty/unset.
+ // Maximum length for this list is 10
+ // Minimum length for this list is 1
+ // +kubebuilder:validation:MaxItems=10
+ // +kubebuilder:validation:MinItems=1
+ // +listType=atomic
+ // +optional
+ Tolerations []v1.Toleration `json:"tolerations,omitempty"`
+ // verbosity defines the verbosity of log messages for Metrics Server.
+ // Valid values are Errors, Info, Trace, TraceAll and omitted.
+ // When set to Errors, only critical messages and errors are logged.
+ // When set to Info, only basic information messages are logged.
+ // When set to Trace, information useful for general debugging is logged.
+ // When set to TraceAll, detailed information about metric scraping is logged.
+ // When omitted, this means no opinion and the platform is left to choose a reasonable default, that is subject to change over time.
+ // The current default value is `Errors`
+ // +optional
+ Verbosity VerbosityLevel `json:"verbosity,omitempty,omitzero"`
+ // resources defines the compute resource requests and limits for the Metrics Server container.
+ // This includes CPU, memory and HugePages constraints to help control scheduling and resource usage.
+ // When not specified, defaults are used by the platform. Requests cannot exceed limits.
+ // This field is optional.
+ // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
+ // This is a simplified API that maps to Kubernetes ResourceRequirements.
+ // The current default values are:
+ // resources:
+ // - name: cpu
+ // request: 4m
+ // limit: null
+ // - name: memory
+ // request: 40Mi
+ // limit: null
+ // Maximum length for this list is 10.
+ // Minimum length for this list is 1.
+ // +optional
+ // +listType=map
+ // +listMapKey=name
+ // +kubebuilder:validation:MaxItems=10
+ // +kubebuilder:validation:MinItems=1
+ Resources []ContainerResource `json:"resources,omitempty"`
+ // topologySpreadConstraints defines rules for how Metrics Server Pods should be distributed
+ // across topology domains such as zones, nodes, or other user-defined labels.
+ // topologySpreadConstraints is optional.
+ // This helps improve high availability and resource efficiency by avoiding placing
+ // too many replicas in the same failure domain.
+ //
+ // When omitted, this means no opinion and the platform is left to choose a default, which is subject to change over time.
+ // This field maps directly to the `topologySpreadConstraints` field in the Pod spec.
+ // Default is empty list.
+ // Maximum length for this list is 10.
+ // Minimum length for this list is 1
+ // Entries must have unique topologyKey and whenUnsatisfiable pairs.
+ // +kubebuilder:validation:MaxItems=10
+ // +kubebuilder:validation:MinItems=1
+ // +listType=map
+ // +listMapKey=topologyKey
+ // +listMapKey=whenUnsatisfiable
+ // +optional
+ TopologySpreadConstraints []v1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"`
+}
+
+// AuditProfile defines the audit log level for the Metrics Server.
+// +kubebuilder:validation:Enum=None;Metadata;Request;RequestResponse
+type AuditProfile string
+
+const (
+ // AuditProfileNone disables audit logging
+ AuditProfileNone AuditProfile = "None"
+ // AuditProfileMetadata logs request metadata (requesting user, timestamp, resource, verb, etc.) but not request or response body
+ AuditProfileMetadata AuditProfile = "Metadata"
+ // AuditProfileRequest logs event metadata and request body but not response body
+ AuditProfileRequest AuditProfile = "Request"
+ // AuditProfileRequestResponse logs event metadata, request and response bodies
+ AuditProfileRequestResponse AuditProfile = "RequestResponse"
+)
+
+// VerbosityLevel defines the verbosity of log messages for Metrics Server.
+// +kubebuilder:validation:Enum=Errors;Info;Trace;TraceAll
+type VerbosityLevel string
+
+const (
+ // VerbosityLevelErrors means only critical messages and errors are logged.
+ VerbosityLevelErrors VerbosityLevel = "Errors"
+ // VerbosityLevelInfo means basic informational messages are logged.
+ VerbosityLevelInfo VerbosityLevel = "Info"
+ // VerbosityLevelTrace means extended information useful for general debugging is logged.
+ VerbosityLevelTrace VerbosityLevel = "Trace"
+ // VerbosityLevelTraceAll means detailed information about metric scraping operations is logged.
+ VerbosityLevelTraceAll VerbosityLevel = "TraceAll"
+)
+
+// Audit profile configurations
+type Audit struct {
+ // profile is a required field for configuring the audit log level of the Kubernetes Metrics Server.
+ // Allowed values are None, Metadata, Request, or RequestResponse.
+ // When set to None, audit logging is disabled and no audit events are recorded.
+ // When set to Metadata, only request metadata (such as requesting user, timestamp, resource, verb, etc.) is logged, but not the request or response body.
+ // When set to Request, event metadata and the request body are logged, but not the response body.
+ // When set to RequestResponse, event metadata, request body, and response body are all logged, providing the most detailed audit information.
+ //
+ // See: https://kubernetes.io/docs/tasks/debug-application-cluster/audit/#audit-policy
+ // for more information about auditing and log levels.
+ // +required
+ Profile AuditProfile `json:"profile,omitempty"`
+}
diff --git a/vendor/github.com/openshift/api/config/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/openshift/api/config/v1alpha1/zz_generated.deepcopy.go
index 144b173f6b..6549f6cbe4 100644
--- a/vendor/github.com/openshift/api/config/v1alpha1/zz_generated.deepcopy.go
+++ b/vendor/github.com/openshift/api/config/v1alpha1/zz_generated.deepcopy.go
@@ -14,11 +14,7 @@ import (
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AlertmanagerConfig) DeepCopyInto(out *AlertmanagerConfig) {
*out = *in
- if in.CustomConfig != nil {
- in, out := &in.CustomConfig, &out.CustomConfig
- *out = new(AlertmanagerCustomConfig)
- (*in).DeepCopyInto(*out)
- }
+ in.CustomConfig.DeepCopyInto(&out.CustomConfig)
return
}
@@ -86,6 +82,22 @@ func (in *AlertmanagerCustomConfig) DeepCopy() *AlertmanagerCustomConfig {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Audit) DeepCopyInto(out *Audit) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Audit.
+func (in *Audit) DeepCopy() *Audit {
+ if in == nil {
+ return nil
+ }
+ out := new(Audit)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Backup) DeepCopyInto(out *Backup) {
*out = *in
@@ -350,16 +362,9 @@ func (in *ClusterMonitoringList) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterMonitoringSpec) DeepCopyInto(out *ClusterMonitoringSpec) {
*out = *in
- if in.UserDefined != nil {
- in, out := &in.UserDefined, &out.UserDefined
- *out = new(UserDefinedMonitoring)
- **out = **in
- }
- if in.AlertmanagerConfig != nil {
- in, out := &in.AlertmanagerConfig, &out.AlertmanagerConfig
- *out = new(AlertmanagerConfig)
- (*in).DeepCopyInto(*out)
- }
+ out.UserDefined = in.UserDefined
+ in.AlertmanagerConfig.DeepCopyInto(&out.AlertmanagerConfig)
+ in.MetricsServerConfig.DeepCopyInto(&out.MetricsServerConfig)
return
}
@@ -677,6 +682,51 @@ func (in *InsightsDataGatherStatus) DeepCopy() *InsightsDataGatherStatus {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MetricsServerConfig) DeepCopyInto(out *MetricsServerConfig) {
+ *out = *in
+ out.Audit = in.Audit
+ if in.NodeSelector != nil {
+ in, out := &in.NodeSelector, &out.NodeSelector
+ *out = make(map[string]string, len(*in))
+ for key, val := range *in {
+ (*out)[key] = val
+ }
+ }
+ if in.Tolerations != nil {
+ in, out := &in.Tolerations, &out.Tolerations
+ *out = make([]v1.Toleration, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.Resources != nil {
+ in, out := &in.Resources, &out.Resources
+ *out = make([]ContainerResource, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.TopologySpreadConstraints != nil {
+ in, out := &in.TopologySpreadConstraints, &out.TopologySpreadConstraints
+ *out = make([]v1.TopologySpreadConstraint, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsServerConfig.
+func (in *MetricsServerConfig) DeepCopy() *MetricsServerConfig {
+ if in == nil {
+ return nil
+ }
+ out := new(MetricsServerConfig)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PKI) DeepCopyInto(out *PKI) {
*out = *in
diff --git a/vendor/github.com/openshift/api/config/v1alpha1/zz_generated.swagger_doc_generated.go b/vendor/github.com/openshift/api/config/v1alpha1/zz_generated.swagger_doc_generated.go
index b6ff150fcb..6ba6ad11f4 100644
--- a/vendor/github.com/openshift/api/config/v1alpha1/zz_generated.swagger_doc_generated.go
+++ b/vendor/github.com/openshift/api/config/v1alpha1/zz_generated.swagger_doc_generated.go
@@ -143,6 +143,15 @@ func (AlertmanagerCustomConfig) SwaggerDoc() map[string]string {
return map_AlertmanagerCustomConfig
}
+var map_Audit = map[string]string{
+ "": "Audit profile configurations",
+ "profile": "profile is a required field for configuring the audit log level of the Kubernetes Metrics Server. Allowed values are None, Metadata, Request, or RequestResponse. When set to None, audit logging is disabled and no audit events are recorded. When set to Metadata, only request metadata (such as requesting user, timestamp, resource, verb, etc.) is logged, but not the request or response body. When set to Request, event metadata and the request body are logged, but not the response body. When set to RequestResponse, event metadata, request body, and response body are all logged, providing the most detailed audit information.\n\nSee: https://kubernetes.io/docs/tasks/debug-application-cluster/audit/#audit-policy for more information about auditing and log levels.",
+}
+
+func (Audit) SwaggerDoc() map[string]string {
+ return map_Audit
+}
+
var map_ClusterMonitoring = map[string]string{
"": "ClusterMonitoring is the Custom Resource object which holds the current status of Cluster Monitoring Operator. CMO is a central component of the monitoring stack.\n\nCompatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support. ClusterMonitoring is the Schema for the Cluster Monitoring Operators API",
"metadata": "metadata is the standard object metadata.",
@@ -165,9 +174,10 @@ func (ClusterMonitoringList) SwaggerDoc() map[string]string {
}
var map_ClusterMonitoringSpec = map[string]string{
- "": "ClusterMonitoringSpec defines the desired state of Cluster Monitoring Operator",
- "userDefined": "userDefined set the deployment mode for user-defined monitoring in addition to the default platform monitoring. userDefined is optional. When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time. The current default value is `Disabled`.",
- "alertmanagerConfig": "alertmanagerConfig allows users to configure how the default Alertmanager instance should be deployed in the `openshift-monitoring` namespace. alertmanagerConfig is optional. When omitted, this means no opinion and the platform is left to choose a reasonable default, that is subject to change over time. The current default value is `DefaultConfig`.",
+ "": "ClusterMonitoringSpec defines the desired state of Cluster Monitoring Operator",
+ "userDefined": "userDefined set the deployment mode for user-defined monitoring in addition to the default platform monitoring. userDefined is optional. When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time. The current default value is `Disabled`.",
+ "alertmanagerConfig": "alertmanagerConfig allows users to configure how the default Alertmanager instance should be deployed in the `openshift-monitoring` namespace. alertmanagerConfig is optional. When omitted, this means no opinion and the platform is left to choose a reasonable default, that is subject to change over time. The current default value is `DefaultConfig`.",
+ "metricsServerConfig": "metricsServerConfig is an optional field that can be used to configure the Kubernetes Metrics Server that runs in the openshift-monitoring namespace. Specifically, it can configure how the Metrics Server instance is deployed, pod scheduling, its audit policy and log verbosity. When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time.",
}
func (ClusterMonitoringSpec) SwaggerDoc() map[string]string {
@@ -193,6 +203,20 @@ func (ContainerResource) SwaggerDoc() map[string]string {
return map_ContainerResource
}
+var map_MetricsServerConfig = map[string]string{
+ "": "MetricsServerConfig provides configuration options for the Metrics Server instance that runs in the `openshift-monitoring` namespace. Use this configuration to control how the Metrics Server instance is deployed, how it logs, and how its pods are scheduled.",
+ "audit": "audit defines the audit configuration used by the Metrics Server instance. audit is optional. When omitted, this means no opinion and the platform is left to choose a reasonable default, that is subject to change over time. The current default sets audit.profile to Metadata",
+ "nodeSelector": "nodeSelector defines the nodes on which the Pods are scheduled nodeSelector is optional.\n\nWhen omitted, this means the user has no opinion and the platform is left to choose reasonable defaults. These defaults are subject to change over time. The current default value is `kubernetes.io/os: linux`.",
+ "tolerations": "tolerations defines tolerations for the pods. tolerations is optional.\n\nWhen omitted, this means the user has no opinion and the platform is left to choose reasonable defaults. These defaults are subject to change over time. Defaults are empty/unset. Maximum length for this list is 10 Minimum length for this list is 1",
+ "verbosity": "verbosity defines the verbosity of log messages for Metrics Server. Valid values are Errors, Info, Trace, TraceAll and omitted. When set to Errors, only critical messages and errors are logged. When set to Info, only basic information messages are logged. When set to Trace, information useful for general debugging is logged. When set to TraceAll, detailed information about metric scraping is logged. When omitted, this means no opinion and the platform is left to choose a reasonable default, that is subject to change over time. The current default value is `Errors`",
+ "resources": "resources defines the compute resource requests and limits for the Metrics Server container. This includes CPU, memory and HugePages constraints to help control scheduling and resource usage. When not specified, defaults are used by the platform. Requests cannot exceed limits. This field is optional. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ This is a simplified API that maps to Kubernetes ResourceRequirements. The current default values are:\n resources:\n - name: cpu\n request: 4m\n limit: null\n - name: memory\n request: 40Mi\n limit: null\nMaximum length for this list is 10. Minimum length for this list is 1.",
+ "topologySpreadConstraints": "topologySpreadConstraints defines rules for how Metrics Server Pods should be distributed across topology domains such as zones, nodes, or other user-defined labels. topologySpreadConstraints is optional. This helps improve high availability and resource efficiency by avoiding placing too many replicas in the same failure domain.\n\nWhen omitted, this means no opinion and the platform is left to choose a default, which is subject to change over time. This field maps directly to the `topologySpreadConstraints` field in the Pod spec. Default is empty list. Maximum length for this list is 10. Minimum length for this list is 1 Entries must have unique topologyKey and whenUnsatisfiable pairs.",
+}
+
+func (MetricsServerConfig) SwaggerDoc() map[string]string {
+ return map_MetricsServerConfig
+}
+
var map_UserDefinedMonitoring = map[string]string{
"": "UserDefinedMonitoring config for user-defined projects.",
"mode": "mode defines the different configurations of UserDefinedMonitoring Valid values are Disabled and NamespaceIsolated Disabled disables monitoring for user-defined projects. This restricts the default monitoring stack, installed in the openshift-monitoring project, to monitor only platform namespaces, which prevents any custom monitoring configurations or resources from being applied to user-defined namespaces. NamespaceIsolated enables monitoring for user-defined projects with namespace-scoped tenancy. This ensures that metrics, alerts, and monitoring data are isolated at the namespace level. The current default value is `Disabled`.",
diff --git a/vendor/github.com/openshift/api/console/v1/types_console_cli_download.go b/vendor/github.com/openshift/api/console/v1/types_console_cli_download.go
index 90c32815ce..cd61e14a8a 100644
--- a/vendor/github.com/openshift/api/console/v1/types_console_cli_download.go
+++ b/vendor/github.com/openshift/api/console/v1/types_console_cli_download.go
@@ -18,7 +18,7 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +kubebuilder:metadata:annotations="description=Extension for configuring openshift web console command line interface (CLI) downloads."
// +kubebuilder:metadata:annotations="displayName=ConsoleCLIDownload"
// +kubebuilder:printcolumn:name=Display name,JSONPath=.spec.displayName,type=string
-// +kubebuilder:printcolumn:name=Age,JSONPath=.metadata.creationTimestamp,type=string
+// +kubebuilder:printcolumn:name=Age,JSONPath=.metadata.creationTimestamp,type=date
// +openshift:compatibility-gen:level=2
type ConsoleCLIDownload struct {
metav1.TypeMeta `json:",inline"`
diff --git a/vendor/github.com/openshift/api/console/v1/types_console_link.go b/vendor/github.com/openshift/api/console/v1/types_console_link.go
index 977fcbda97..a84572925d 100644
--- a/vendor/github.com/openshift/api/console/v1/types_console_link.go
+++ b/vendor/github.com/openshift/api/console/v1/types_console_link.go
@@ -19,7 +19,7 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +kubebuilder:metadata:annotations="displayName=ConsoleLinks"
// +kubebuilder:printcolumn:name=Text,JSONPath=.spec.text,type=string
// +kubebuilder:printcolumn:name=URL,JSONPath=.spec.href,type=string
-// +kubebuilder:printcolumn:name=Menu,JSONPath=.spec.menu,type=string
+// +kubebuilder:printcolumn:name=Location,JSONPath=.spec.location,type=string
// +kubebuilder:printcolumn:name=Age,JSONPath=.metadata.creationTimestamp,type=date
// +openshift:compatibility-gen:level=2
type ConsoleLink struct {
diff --git a/vendor/github.com/openshift/api/console/v1/zz_generated.featuregated-crd-manifests.yaml b/vendor/github.com/openshift/api/console/v1/zz_generated.featuregated-crd-manifests.yaml
index 250f873a09..caa676e691 100644
--- a/vendor/github.com/openshift/api/console/v1/zz_generated.featuregated-crd-manifests.yaml
+++ b/vendor/github.com/openshift/api/console/v1/zz_generated.featuregated-crd-manifests.yaml
@@ -22,7 +22,7 @@ consoleclidownloads.console.openshift.io:
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
- type: string
+ type: date
Scope: Cluster
ShortNames: null
TopLevelFeatureGates: []
@@ -85,8 +85,8 @@ consolelinks.console.openshift.io:
- jsonPath: .spec.href
name: URL
type: string
- - jsonPath: .spec.menu
- name: Menu
+ - jsonPath: .spec.location
+ name: Location
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
diff --git a/vendor/github.com/openshift/api/features.md b/vendor/github.com/openshift/api/features.md
index 35ba08c396..af6848958d 100644
--- a/vendor/github.com/openshift/api/features.md
+++ b/vendor/github.com/openshift/api/features.md
@@ -6,6 +6,7 @@
| MultiArchInstallAzure| | | | | | |
| ShortCertRotation| | | | | | |
| BootImageSkewEnforcement| | | Enabled | Enabled | | |
+| ClusterAPIMachineManagementVSphere| | | Enabled | Enabled | | |
| Example2| | | Enabled | Enabled | | |
| ExternalSnapshotMetadata| | | Enabled | Enabled | | |
| NewOLMCatalogdAPIV1Metas| | | | Enabled | | Enabled |
@@ -18,12 +19,17 @@
| AWSClusterHostedDNS| | | Enabled | Enabled | Enabled | Enabled |
| AWSClusterHostedDNSInstall| | | Enabled | Enabled | Enabled | Enabled |
| AWSDedicatedHosts| | | Enabled | Enabled | Enabled | Enabled |
+| AWSDualStackInstall| | | Enabled | Enabled | Enabled | Enabled |
| AWSServiceLBNetworkSecurityGroup| | | Enabled | Enabled | Enabled | Enabled |
| AutomatedEtcdBackup| | | Enabled | Enabled | Enabled | Enabled |
| AzureClusterHostedDNSInstall| | | Enabled | Enabled | Enabled | Enabled |
| AzureDedicatedHosts| | | Enabled | Enabled | Enabled | Enabled |
+| AzureDualStackInstall| | | Enabled | Enabled | Enabled | Enabled |
| AzureMultiDisk| | | Enabled | Enabled | Enabled | Enabled |
| BootcNodeManagement| | | Enabled | Enabled | Enabled | Enabled |
+| CBORServingAndStorage| | | Enabled | Enabled | Enabled | Enabled |
+| ClientsAllowCBOR| | | Enabled | Enabled | Enabled | Enabled |
+| ClientsPreferCBOR| | | Enabled | Enabled | Enabled | Enabled |
| ClusterAPIInstallIBMCloud| | | Enabled | Enabled | Enabled | Enabled |
| ClusterMonitoringConfig| | | Enabled | Enabled | Enabled | Enabled |
| ClusterVersionOperatorConfiguration| | | Enabled | Enabled | Enabled | Enabled |
@@ -33,28 +39,26 @@
| DynamicResourceAllocation| | | Enabled | Enabled | Enabled | Enabled |
| EtcdBackendQuota| | | Enabled | Enabled | Enabled | Enabled |
| Example| | | Enabled | Enabled | Enabled | Enabled |
-| ExternalOIDCWithUIDAndExtraClaimMappings| | | Enabled | Enabled | Enabled | Enabled |
| GCPClusterHostedDNS| | | Enabled | Enabled | Enabled | Enabled |
-| GCPClusterHostedDNSInstall| | | Enabled | Enabled | Enabled | Enabled |
| GCPCustomAPIEndpoints| | | Enabled | Enabled | Enabled | Enabled |
| GCPCustomAPIEndpointsInstall| | | Enabled | Enabled | Enabled | Enabled |
+| GCPDualStackInstall| | | Enabled | Enabled | Enabled | Enabled |
| ImageModeStatusReporting| | | Enabled | Enabled | Enabled | Enabled |
| ImageStreamImportMode| | | Enabled | Enabled | Enabled | Enabled |
| IngressControllerDynamicConfigurationManager| | | Enabled | Enabled | Enabled | Enabled |
| InsightsConfig| | | Enabled | Enabled | Enabled | Enabled |
-| InsightsConfigAPI| | | Enabled | Enabled | Enabled | Enabled |
| InsightsOnDemandDataGather| | | Enabled | Enabled | Enabled | Enabled |
| IrreconcilableMachineConfig| | | Enabled | Enabled | Enabled | Enabled |
| KMSEncryptionProvider| | | Enabled | Enabled | Enabled | Enabled |
| MachineAPIMigration| | | Enabled | Enabled | Enabled | Enabled |
| ManagedBootImagesAzure| | | Enabled | Enabled | Enabled | Enabled |
+| ManagedBootImagesCPMS| | | Enabled | Enabled | Enabled | Enabled |
| ManagedBootImagesvSphere| | | Enabled | Enabled | Enabled | Enabled |
| MaxUnavailableStatefulSet| | | Enabled | Enabled | Enabled | Enabled |
| MinimumKubeletVersion| | | Enabled | Enabled | Enabled | Enabled |
| MixedCPUsAllocation| | | Enabled | Enabled | Enabled | Enabled |
| MultiDiskSetup| | | Enabled | Enabled | Enabled | Enabled |
| MutatingAdmissionPolicy| | | Enabled | Enabled | Enabled | Enabled |
-| NodeSwap| | | Enabled | Enabled | Enabled | Enabled |
| NutanixMultiSubnets| | | Enabled | Enabled | Enabled | Enabled |
| OVNObservability| | | Enabled | Enabled | Enabled | Enabled |
| PreconfiguredUDNAddresses| | | Enabled | Enabled | Enabled | Enabled |
@@ -64,9 +68,7 @@
| TranslateStreamCloseWebsocketRequests| | | Enabled | Enabled | Enabled | Enabled |
| VSphereConfigurableMaxAllowedBlockVolumesPerNode| | | Enabled | Enabled | Enabled | Enabled |
| VSphereHostVMGroupZonal| | | Enabled | Enabled | Enabled | Enabled |
-| VolumeAttributesClass| | | Enabled | Enabled | Enabled | Enabled |
| VolumeGroupSnapshot| | | Enabled | Enabled | Enabled | Enabled |
-| ExternalOIDC| Enabled | | Enabled | Enabled | Enabled | Enabled |
| AdditionalRoutingCapabilities| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| AdminNetworkPolicy| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| AlibabaPlatform| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
@@ -74,11 +76,13 @@
| BuildCSIVolumes| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| CPMSMachineNamePrefix| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| ConsolePluginContentSecurityPolicy| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
+| ExternalOIDC| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
+| ExternalOIDCWithUIDAndExtraClaimMappings| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
+| GCPClusterHostedDNSInstall| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| GatewayAPI| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| GatewayAPIController| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| HighlyAvailableArbiter| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| ImageVolume| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
-| IngressControllerLBSubnetsAWS| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| KMSv1| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| MachineConfigNodes| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| ManagedBootImages| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
@@ -93,7 +97,6 @@
| RouteAdvertisements| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| RouteExternalCertificate| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| ServiceAccountTokenNodeBinding| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
-| SetEIPForNLBIngressController| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| SigstoreImageVerification| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| StoragePerformantSecurityPolicy| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| UpgradeStatus| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
@@ -101,3 +104,4 @@
| UserNamespacesSupport| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| VSphereMultiDisk| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| VSphereMultiNetworks| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
+| VolumeAttributesClass| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
diff --git a/vendor/github.com/openshift/api/features/features.go b/vendor/github.com/openshift/api/features/features.go
index 711dd25f22..af1ae8f4e3 100644
--- a/vendor/github.com/openshift/api/features/features.go
+++ b/vendor/github.com/openshift/api/features/features.go
@@ -68,14 +68,6 @@ var (
enableIn(configv1.Default, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
- FeatureGateSetEIPForNLBIngressController = newFeatureGate("SetEIPForNLBIngressController").
- reportProblemsToJiraComponent("Networking / router").
- contactPerson("miheer").
- productScope(ocpSpecific).
- enhancementPR(legacyFeatureGateWithoutEnhancement).
- enableIn(configv1.Default, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
- mustRegister()
-
FeatureGateOpenShiftPodSecurityAdmission = newFeatureGate("OpenShiftPodSecurityAdmission").
reportProblemsToJiraComponent("auth").
contactPerson("ibihim").
@@ -92,21 +84,6 @@ var (
enableIn(configv1.Default, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
- FeatureGateNodeSwap = newFeatureGate("NodeSwap").
- reportProblemsToJiraComponent("node").
- contactPerson("ehashman").
- productScope(kubernetes).
- enhancementPR("https://github.com/kubernetes/enhancements/issues/2400").
- enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
- mustRegister()
-
- FeatureGateInsightsConfigAPI = newFeatureGate("InsightsConfigAPI").
- reportProblemsToJiraComponent("insights").
- contactPerson("tremes").
- productScope(ocpSpecific).
- enhancementPR(legacyFeatureGateWithoutEnhancement).
- enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
- mustRegister()
FeatureGateDynamicResourceAllocation = newFeatureGate("DynamicResourceAllocation").
reportProblemsToJiraComponent("scheduling").
@@ -377,6 +354,14 @@ var (
enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
+ FeatureGateManagedBootImagesCPMS = newFeatureGate("ManagedBootImagesCPMS").
+ reportProblemsToJiraComponent("MachineConfigOperator").
+ contactPerson("djoshy").
+ productScope(ocpSpecific).
+ enhancementPR("https://github.com/openshift/enhancements/pull/1818").
+ enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ mustRegister()
+
FeatureGateBootImageSkewEnforcement = newFeatureGate("BootImageSkewEnforcement").
reportProblemsToJiraComponent("MachineConfigOperator").
contactPerson("djoshy").
@@ -438,7 +423,7 @@ var (
contactPerson("dfajmon").
productScope(kubernetes).
enhancementPR("https://github.com/kubernetes/enhancements/issues/3751").
- enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ enableIn(configv1.Default, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
FeatureGateVolumeGroupSnapshot = newFeatureGate("VolumeGroupSnapshot").
@@ -462,8 +447,7 @@ var (
contactPerson("liouk").
productScope(ocpSpecific).
enhancementPR("https://github.com/openshift/enhancements/pull/1596").
- enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
- enableForClusterProfile(Hypershift, configv1.Default, configv1.TechPreviewNoUpgrade).
+ enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade, configv1.Default).
mustRegister()
FeatureGateExternalOIDCWithAdditionalClaimMappings = newFeatureGate("ExternalOIDCWithUIDAndExtraClaimMappings").
@@ -471,8 +455,7 @@ var (
contactPerson("bpalmer").
productScope(ocpSpecific).
enhancementPR("https://github.com/openshift/enhancements/pull/1777").
- enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
- enableForClusterProfile(Hypershift, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade, configv1.Default).
mustRegister()
FeatureGateExample = newFeatureGate("Example").
@@ -571,6 +554,14 @@ var (
enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
+ FeatureGateClusterAPIMachineManagementVSphere = newFeatureGate("ClusterAPIMachineManagementVSphere").
+ reportProblemsToJiraComponent("SPLAT").
+ contactPerson("jcpowermac").
+ productScope(ocpSpecific).
+ enhancementPR("https://github.com/openshift/enhancements/pull/1465").
+ enableIn(configv1.DevPreviewNoUpgrade).
+ mustRegister()
+
FeatureGateClusterMonitoringConfig = newFeatureGate("ClusterMonitoringConfig").
reportProblemsToJiraComponent("Monitoring").
contactPerson("marioferh").
@@ -586,14 +577,6 @@ var (
enhancementPR(legacyFeatureGateWithoutEnhancement).
mustRegister()
- FeatureGateIngressControllerLBSubnetsAWS = newFeatureGate("IngressControllerLBSubnetsAWS").
- reportProblemsToJiraComponent("Routing").
- contactPerson("miciah").
- productScope(ocpSpecific).
- enhancementPR(legacyFeatureGateWithoutEnhancement).
- enableIn(configv1.Default, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
- mustRegister()
-
FeatureGateImageStreamImportMode = newFeatureGate("ImageStreamImportMode").
reportProblemsToJiraComponent("Multi-Arch").
contactPerson("psundara").
@@ -822,7 +805,7 @@ var (
contactPerson("barbacbd").
productScope(ocpSpecific).
enhancementPR("https://github.com/openshift/enhancements/pull/1468").
- enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ enableIn(configv1.Default, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
FeatureGateAWSClusterHostedDNSInstall = newFeatureGate("AWSClusterHostedDNSInstall").
@@ -848,4 +831,51 @@ var (
enhancementPR("https://github.com/openshift/enhancements/pull/1785").
enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
+ FeatureGateAWSDualStackInstall = newFeatureGate("AWSDualStackInstall").
+ reportProblemsToJiraComponent("Installer").
+ contactPerson("sadasu").
+ productScope(ocpSpecific).
+ enhancementPR("https://github.com/openshift/enhancements/pull/1806").
+ enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ mustRegister()
+
+ FeatureGateAzureDualStackInstall = newFeatureGate("AzureDualStackInstall").
+ reportProblemsToJiraComponent("Installer").
+ contactPerson("jhixson74").
+ productScope(ocpSpecific).
+ enhancementPR("https://github.com/openshift/enhancements/pull/1806").
+ enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ mustRegister()
+
+ FeatureGateGCPDualStackInstall = newFeatureGate("GCPDualStackInstall").
+ reportProblemsToJiraComponent("Installer").
+ contactPerson("barbacbd").
+ productScope(ocpSpecific).
+ enhancementPR("https://github.com/openshift/enhancements/pull/1806").
+ enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ mustRegister()
+
+ FeatureCBORServingAndStorage = newFeatureGate("CBORServingAndStorage").
+ reportProblemsToJiraComponent("kube-apiserver").
+ contactPerson("benluddy").
+ productScope(kubernetes).
+ enhancementPR("https://github.com/kubernetes/enhancements/issues/4222").
+ enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ mustRegister()
+
+ FeatureCBORClientsAllowCBOR = newFeatureGate("ClientsAllowCBOR").
+ reportProblemsToJiraComponent("kube-apiserver").
+ contactPerson("benluddy").
+ productScope(kubernetes).
+ enhancementPR("https://github.com/kubernetes/enhancements/issues/4222").
+ enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ mustRegister()
+
+ FeatureClientsPreferCBOR = newFeatureGate("ClientsPreferCBOR").
+ reportProblemsToJiraComponent("kube-apiserver").
+ contactPerson("benluddy").
+ productScope(kubernetes).
+ enhancementPR("https://github.com/kubernetes/enhancements/issues/4222").
+ enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ mustRegister()
)
diff --git a/vendor/github.com/openshift/api/legacyconfig/v1/types.go b/vendor/github.com/openshift/api/legacyconfig/v1/types.go
index c0e03c233a..f2db8e9ccb 100644
--- a/vendor/github.com/openshift/api/legacyconfig/v1/types.go
+++ b/vendor/github.com/openshift/api/legacyconfig/v1/types.go
@@ -801,7 +801,7 @@ type TokenConfig struct {
// accessTokenInactivityTimeoutSeconds defined the default token
// inactivity timeout for tokens granted by any client.
// Setting it to nil means the feature is completely disabled (default)
- // The default setting can be overriden on OAuthClient basis.
+ // The default setting can be overridden on OAuthClient basis.
// The value represents the maximum amount of time that can occur between
// consecutive uses of the token. Tokens become invalid if they are not
// used within this temporal window. The user will need to acquire a new
diff --git a/vendor/github.com/openshift/api/legacyconfig/v1/zz_generated.swagger_doc_generated.go b/vendor/github.com/openshift/api/legacyconfig/v1/zz_generated.swagger_doc_generated.go
index 42444e8aee..a915c00425 100644
--- a/vendor/github.com/openshift/api/legacyconfig/v1/zz_generated.swagger_doc_generated.go
+++ b/vendor/github.com/openshift/api/legacyconfig/v1/zz_generated.swagger_doc_generated.go
@@ -927,7 +927,7 @@ var map_TokenConfig = map[string]string{
"": "TokenConfig holds the necessary configuration options for authorization and access tokens",
"authorizeTokenMaxAgeSeconds": "authorizeTokenMaxAgeSeconds defines the maximum age of authorize tokens",
"accessTokenMaxAgeSeconds": "accessTokenMaxAgeSeconds defines the maximum age of access tokens",
- "accessTokenInactivityTimeoutSeconds": "accessTokenInactivityTimeoutSeconds defined the default token inactivity timeout for tokens granted by any client. Setting it to nil means the feature is completely disabled (default) The default setting can be overriden on OAuthClient basis. The value represents the maximum amount of time that can occur between consecutive uses of the token. Tokens become invalid if they are not used within this temporal window. The user will need to acquire a new token to regain access once a token times out. Valid values are: - 0: Tokens never time out - X: Tokens time out if there is no activity for X seconds The current minimum allowed value for X is 300 (5 minutes)",
+ "accessTokenInactivityTimeoutSeconds": "accessTokenInactivityTimeoutSeconds defined the default token inactivity timeout for tokens granted by any client. Setting it to nil means the feature is completely disabled (default) The default setting can be overridden on OAuthClient basis. The value represents the maximum amount of time that can occur between consecutive uses of the token. Tokens become invalid if they are not used within this temporal window. The user will need to acquire a new token to regain access once a token times out. Valid values are: - 0: Tokens never time out - X: Tokens time out if there is no activity for X seconds The current minimum allowed value for X is 300 (5 minutes)",
}
func (TokenConfig) SwaggerDoc() map[string]string {
diff --git a/vendor/github.com/openshift/api/machine/v1/types_controlplanemachineset.go b/vendor/github.com/openshift/api/machine/v1/types_controlplanemachineset.go
index 409ffc64e0..d7661cf389 100644
--- a/vendor/github.com/openshift/api/machine/v1/types_controlplanemachineset.go
+++ b/vendor/github.com/openshift/api/machine/v1/types_controlplanemachineset.go
@@ -174,7 +174,7 @@ type OpenShiftMachineV1Beta1MachineTemplate struct {
// The ProviderSpec within contains platform specific details
// for creating the Control Plane Machines.
// The ProviderSe should be complete apart from the platform specific
- // failure domain field. This will be overriden when the Machines
+ // failure domain field. This will be overridden when the Machines
// are created based on the FailureDomains field.
// +required
Spec machinev1beta1.MachineSpec `json:"spec"`
diff --git a/vendor/github.com/openshift/api/machine/v1/zz_generated.swagger_doc_generated.go b/vendor/github.com/openshift/api/machine/v1/zz_generated.swagger_doc_generated.go
index c0b8c4ce42..2e35df7e23 100644
--- a/vendor/github.com/openshift/api/machine/v1/zz_generated.swagger_doc_generated.go
+++ b/vendor/github.com/openshift/api/machine/v1/zz_generated.swagger_doc_generated.go
@@ -280,7 +280,7 @@ var map_OpenShiftMachineV1Beta1MachineTemplate = map[string]string{
"": "OpenShiftMachineV1Beta1MachineTemplate is a template for the ControlPlaneMachineSet to create Machines from the v1beta1.machine.openshift.io API group.",
"failureDomains": "failureDomains is the list of failure domains (sometimes called availability zones) in which the ControlPlaneMachineSet should balance the Control Plane Machines. This will be merged into the ProviderSpec given in the template. This field is optional on platforms that do not require placement information.",
"metadata": "ObjectMeta is the standard object metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata Labels are required to match the ControlPlaneMachineSet selector.",
- "spec": "spec contains the desired configuration of the Control Plane Machines. The ProviderSpec within contains platform specific details for creating the Control Plane Machines. The ProviderSe should be complete apart from the platform specific failure domain field. This will be overriden when the Machines are created based on the FailureDomains field.",
+ "spec": "spec contains the desired configuration of the Control Plane Machines. The ProviderSpec within contains platform specific details for creating the Control Plane Machines. The ProviderSe should be complete apart from the platform specific failure domain field. This will be overridden when the Machines are created based on the FailureDomains field.",
}
func (OpenShiftMachineV1Beta1MachineTemplate) SwaggerDoc() map[string]string {
diff --git a/vendor/github.com/openshift/api/machine/v1beta1/types_awsprovider.go b/vendor/github.com/openshift/api/machine/v1beta1/types_awsprovider.go
index db15df2cc4..b3b38bc6cc 100644
--- a/vendor/github.com/openshift/api/machine/v1beta1/types_awsprovider.go
+++ b/vendor/github.com/openshift/api/machine/v1beta1/types_awsprovider.go
@@ -17,6 +17,13 @@ type AWSMachineProviderConfig struct {
AMI AWSResourceReference `json:"ami"`
// instanceType is the type of instance to create. Example: m4.xlarge
InstanceType string `json:"instanceType"`
+ // cpuOptions defines CPU-related settings for the instance, including the confidential computing policy.
+ // When omitted, this means no opinion and the AWS platform is left to choose a reasonable default.
+ // More info:
+ // https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CpuOptionsRequest.html,
+ // https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html
+ // +optional
+ CPUOptions *CPUOptions `json:"cpuOptions,omitempty,omitzero"`
// tags is the set of tags to add to apply to an instance, in addition to the ones
// added by default by the actuator. These tags are additive. The actuator will ensure
// these tags are present, but will not remove any other tags that may exist on the
@@ -109,6 +116,37 @@ type AWSMachineProviderConfig struct {
MarketType MarketType `json:"marketType,omitempty"`
}
+// AWSConfidentialComputePolicy represents the confidential compute configuration for the instance.
+// +kubebuilder:validation:Enum=Disabled;AMDEncryptedVirtualizationNestedPaging
+type AWSConfidentialComputePolicy string
+
+const (
+ // AWSConfidentialComputePolicyDisabled disables confidential computing for the instance.
+ AWSConfidentialComputePolicyDisabled AWSConfidentialComputePolicy = "Disabled"
+ // AWSConfidentialComputePolicySEVSNP enables AMD SEV-SNP as the confidential computing technology for the instance.
+ AWSConfidentialComputePolicySEVSNP AWSConfidentialComputePolicy = "AMDEncryptedVirtualizationNestedPaging"
+)
+
+// CPUOptions defines CPU-related settings for the instance, including the confidential computing policy.
+// If provided, it must not be empty — at least one field must be set.
+// +kubebuilder:validation:MinProperties=1
+type CPUOptions struct {
+ // confidentialCompute specifies whether confidential computing should be enabled for the instance,
+ // and, if so, which confidential computing technology to use.
+ // Valid values are: Disabled, AMDEncryptedVirtualizationNestedPaging and omitted.
+ // When set to Disabled, confidential computing will be disabled for the instance.
+ // When set to AMDEncryptedVirtualizationNestedPaging, AMD SEV-SNP will be used as the confidential computing technology for the instance.
+ // In this case, ensure the following conditions are met:
+ // 1) The selected instance type supports AMD SEV-SNP.
+ // 2) The selected AWS region supports AMD SEV-SNP.
+ // 3) The selected AMI supports AMD SEV-SNP.
+ // More details can be checked at https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html
+ // When omitted, this means no opinion and the AWS platform is left to choose a reasonable default,
+ // which is subject to change without notice. The current default is Disabled.
+ // +optional
+ ConfidentialCompute *AWSConfidentialComputePolicy `json:"confidentialCompute,omitempty"`
+}
+
// BlockDeviceMappingSpec describes a block device mapping
type BlockDeviceMappingSpec struct {
// The device name exposed to the machine (for example, /dev/sdh or xvdh).
diff --git a/vendor/github.com/openshift/api/machine/v1beta1/zz_generated.deepcopy.go b/vendor/github.com/openshift/api/machine/v1beta1/zz_generated.deepcopy.go
index 7763435a9e..5aa4f90a49 100644
--- a/vendor/github.com/openshift/api/machine/v1beta1/zz_generated.deepcopy.go
+++ b/vendor/github.com/openshift/api/machine/v1beta1/zz_generated.deepcopy.go
@@ -18,6 +18,11 @@ func (in *AWSMachineProviderConfig) DeepCopyInto(out *AWSMachineProviderConfig)
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.AMI.DeepCopyInto(&out.AMI)
+ if in.CPUOptions != nil {
+ in, out := &in.CPUOptions, &out.CPUOptions
+ *out = new(CPUOptions)
+ (*in).DeepCopyInto(*out)
+ }
if in.Tags != nil {
in, out := &in.Tags, &out.Tags
*out = make([]TagSpecification, len(*in))
@@ -411,6 +416,27 @@ func (in *BlockDeviceMappingSpec) DeepCopy() *BlockDeviceMappingSpec {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *CPUOptions) DeepCopyInto(out *CPUOptions) {
+ *out = *in
+ if in.ConfidentialCompute != nil {
+ in, out := &in.ConfidentialCompute, &out.ConfidentialCompute
+ *out = new(AWSConfidentialComputePolicy)
+ **out = **in
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CPUOptions.
+func (in *CPUOptions) DeepCopy() *CPUOptions {
+ if in == nil {
+ return nil
+ }
+ out := new(CPUOptions)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Condition) DeepCopyInto(out *Condition) {
*out = *in
diff --git a/vendor/github.com/openshift/api/machine/v1beta1/zz_generated.swagger_doc_generated.go b/vendor/github.com/openshift/api/machine/v1beta1/zz_generated.swagger_doc_generated.go
index e40d744f60..4a1b969a81 100644
--- a/vendor/github.com/openshift/api/machine/v1beta1/zz_generated.swagger_doc_generated.go
+++ b/vendor/github.com/openshift/api/machine/v1beta1/zz_generated.swagger_doc_generated.go
@@ -15,6 +15,7 @@ var map_AWSMachineProviderConfig = map[string]string{
"": "AWSMachineProviderConfig is the Schema for the awsmachineproviderconfigs API Compatibility level 2: Stable within a major release for a minimum of 9 months or 3 minor releases (whichever is longer).",
"ami": "ami is the reference to the AMI from which to create the machine instance.",
"instanceType": "instanceType is the type of instance to create. Example: m4.xlarge",
+ "cpuOptions": "cpuOptions defines CPU-related settings for the instance, including the confidential computing policy. When omitted, this means no opinion and the AWS platform is left to choose a reasonable default. More info: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CpuOptionsRequest.html, https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html",
"tags": "tags is the set of tags to add to apply to an instance, in addition to the ones added by default by the actuator. These tags are additive. The actuator will ensure these tags are present, but will not remove any other tags that may exist on the instance.",
"iamInstanceProfile": "iamInstanceProfile is a reference to an IAM role to assign to the instance",
"userDataSecret": "userDataSecret contains a local reference to a secret that contains the UserData to apply to the instance",
@@ -82,6 +83,15 @@ func (BlockDeviceMappingSpec) SwaggerDoc() map[string]string {
return map_BlockDeviceMappingSpec
}
+var map_CPUOptions = map[string]string{
+ "": "CPUOptions defines CPU-related settings for the instance, including the confidential computing policy. If provided, it must not be empty — at least one field must be set.",
+ "confidentialCompute": "confidentialCompute specifies whether confidential computing should be enabled for the instance, and, if so, which confidential computing technology to use. Valid values are: Disabled, AMDEncryptedVirtualizationNestedPaging and omitted. When set to Disabled, confidential computing will be disabled for the instance. When set to AMDEncryptedVirtualizationNestedPaging, AMD SEV-SNP will be used as the confidential computing technology for the instance. In this case, ensure the following conditions are met: 1) The selected instance type supports AMD SEV-SNP. 2) The selected AWS region supports AMD SEV-SNP. 3) The selected AMI supports AMD SEV-SNP. More details can be checked at https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html When omitted, this means no opinion and the AWS platform is left to choose a reasonable default, which is subject to change without notice. The current default is Disabled.",
+}
+
+func (CPUOptions) SwaggerDoc() map[string]string {
+ return map_CPUOptions
+}
+
var map_EBSBlockDeviceSpec = map[string]string{
"": "EBSBlockDeviceSpec describes a block device for an EBS volume. https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/EbsBlockDevice",
"deleteOnTermination": "Indicates whether the EBS volume is deleted on machine termination.\n\nDeprecated: setting this field has no effect.",
diff --git a/vendor/github.com/openshift/api/operator/v1/types_ingress.go b/vendor/github.com/openshift/api/operator/v1/types_ingress.go
index 35b50a8fbd..2dac08f099 100644
--- a/vendor/github.com/openshift/api/operator/v1/types_ingress.go
+++ b/vendor/github.com/openshift/api/operator/v1/types_ingress.go
@@ -460,7 +460,7 @@ var (
type CIDR string
// LoadBalancerStrategy holds parameters for a load balancer.
-// +openshift:validation:FeatureGateAwareXValidation:featureGate=SetEIPForNLBIngressController,rule="!has(self.scope) || self.scope != 'Internal' || !has(self.providerParameters) || !has(self.providerParameters.aws) || !has(self.providerParameters.aws.networkLoadBalancer) || !has(self.providerParameters.aws.networkLoadBalancer.eipAllocations)",message="eipAllocations are forbidden when the scope is Internal."
+// +kubebuilder:validation:XValidation:rule="!has(self.scope) || self.scope != 'Internal' || !has(self.providerParameters) || !has(self.providerParameters.aws) || !has(self.providerParameters.aws.networkLoadBalancer) || !has(self.providerParameters.aws.networkLoadBalancer.eipAllocations)",message="eipAllocations are forbidden when the scope is Internal."
// +kubebuilder:validation:XValidation:rule=`!has(self.scope) || self.scope != 'Internal' || !has(self.providerParameters) || !has(self.providerParameters.openstack) || !has(self.providerParameters.openstack.floatingIP) || self.providerParameters.openstack.floatingIP == ""`,message="cannot specify a floating ip when scope is internal"
type LoadBalancerStrategy struct {
// scope indicates the scope at which the load balancer is exposed.
@@ -797,15 +797,14 @@ type AWSClassicLoadBalancerParameters struct {
// in the status of the IngressController object.
//
// +optional
- // +openshift:enable:FeatureGate=IngressControllerLBSubnetsAWS
Subnets *AWSSubnets `json:"subnets,omitempty"`
}
// AWSNetworkLoadBalancerParameters holds configuration parameters for an
// AWS Network load balancer. For Example: Setting AWS EIPs https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html
-// +openshift:validation:FeatureGateAwareXValidation:requiredFeatureGate=SetEIPForNLBIngressController;IngressControllerLBSubnetsAWS,rule=`has(self.subnets) && has(self.subnets.ids) && has(self.subnets.names) && has(self.eipAllocations) ? size(self.subnets.ids + self.subnets.names) == size(self.eipAllocations) : true`,message="number of subnets must be equal to number of eipAllocations"
-// +openshift:validation:FeatureGateAwareXValidation:requiredFeatureGate=SetEIPForNLBIngressController;IngressControllerLBSubnetsAWS,rule=`has(self.subnets) && has(self.subnets.ids) && !has(self.subnets.names) && has(self.eipAllocations) ? size(self.subnets.ids) == size(self.eipAllocations) : true`,message="number of subnets must be equal to number of eipAllocations"
-// +openshift:validation:FeatureGateAwareXValidation:requiredFeatureGate=SetEIPForNLBIngressController;IngressControllerLBSubnetsAWS,rule=`has(self.subnets) && has(self.subnets.names) && !has(self.subnets.ids) && has(self.eipAllocations) ? size(self.subnets.names) == size(self.eipAllocations) : true`,message="number of subnets must be equal to number of eipAllocations"
+// +kubebuilder:validation:XValidation:rule=`has(self.subnets) && has(self.subnets.ids) && has(self.subnets.names) && has(self.eipAllocations) ? size(self.subnets.ids + self.subnets.names) == size(self.eipAllocations) : true`,message="number of subnets must be equal to number of eipAllocations"
+// +kubebuilder:validation:XValidation:rule=`has(self.subnets) && has(self.subnets.ids) && !has(self.subnets.names) && has(self.eipAllocations) ? size(self.subnets.ids) == size(self.eipAllocations) : true`,message="number of subnets must be equal to number of eipAllocations"
+// +kubebuilder:validation:XValidation:rule=`has(self.subnets) && has(self.subnets.names) && !has(self.subnets.ids) && has(self.eipAllocations) ? size(self.subnets.names) == size(self.eipAllocations) : true`,message="number of subnets must be equal to number of eipAllocations"
type AWSNetworkLoadBalancerParameters struct {
// subnets specifies the subnets to which the load balancer will
// attach. The subnets may be specified by either their
@@ -821,7 +820,6 @@ type AWSNetworkLoadBalancerParameters struct {
// in the status of the IngressController object.
//
// +optional
- // +openshift:enable:FeatureGate=IngressControllerLBSubnetsAWS
Subnets *AWSSubnets `json:"subnets,omitempty"`
// eipAllocations is a list of IDs for Elastic IP (EIP) addresses that
@@ -837,7 +835,6 @@ type AWSNetworkLoadBalancerParameters struct {
// See https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html for general
// information about configuration, characteristics, and limitations of Elastic IP addresses.
//
- // +openshift:enable:FeatureGate=SetEIPForNLBIngressController
// +optional
// +listType=atomic
// +kubebuilder:validation:XValidation:rule=`self.all(x, self.exists_one(y, x == y))`,message="eipAllocations cannot contain duplicates"
diff --git a/vendor/github.com/openshift/api/operator/v1/types_machineconfiguration.go b/vendor/github.com/openshift/api/operator/v1/types_machineconfiguration.go
index 8f779db2a6..c6bcd22bc0 100644
--- a/vendor/github.com/openshift/api/operator/v1/types_machineconfiguration.go
+++ b/vendor/github.com/openshift/api/operator/v1/types_machineconfiguration.go
@@ -17,6 +17,9 @@ import (
//
// Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
// +openshift:compatibility-gen:level=1
+// +openshift:validation:FeatureGateAwareXValidation:featureGate=BootImageSkewEnforcement,rule="self.?status.bootImageSkewEnforcementStatus.mode.orValue(\"\") == 'Automatic' ? self.?spec.managedBootImages.hasValue() || self.?status.managedBootImagesStatus.hasValue() : true",message="when skew enforcement is in Automatic mode, a boot image configuration is required"
+// +openshift:validation:FeatureGateAwareXValidation:featureGate=BootImageSkewEnforcement,rule="self.?status.bootImageSkewEnforcementStatus.mode.orValue(\"\") == 'Automatic' ? !(self.?spec.managedBootImages.machineManagers.hasValue()) || self.spec.managedBootImages.machineManagers.exists(m, m.selection.mode == 'All' && m.resource == 'machinesets' && m.apiGroup == 'machine.openshift.io') : true",message="when skew enforcement is in Automatic mode, managedBootImages must contain a MachineManager opting in all MachineAPI MachineSets"
+// +openshift:validation:FeatureGateAwareXValidation:featureGate=BootImageSkewEnforcement,rule="self.?status.bootImageSkewEnforcementStatus.mode.orValue(\"\") == 'Automatic' ? !(self.?status.managedBootImagesStatus.machineManagers.hasValue()) || self.status.managedBootImagesStatus.machineManagers.exists(m, m.selection.mode == 'All' && m.resource == 'machinesets' && m.apiGroup == 'machine.openshift.io'): true",message="when skew enforcement is in Automatic mode, managedBootImagesStatus must contain a MachineManager opting in all MachineAPI MachineSets"
type MachineConfiguration struct {
metav1.TypeMeta `json:",inline"`
@@ -36,8 +39,6 @@ type MachineConfiguration struct {
type MachineConfigurationSpec struct {
StaticPodOperatorSpec `json:",inline"`
- // TODO(jkyros): This is where we put our knobs and dials
-
// managedBootImages allows configuration for the management of boot images for machine
// resources within the cluster. This configuration allows users to select resources that should
// be updated to the latest boot images during cluster upgrades, ensuring that new machines
@@ -65,8 +66,186 @@ type MachineConfigurationSpec struct {
// +openshift:enable:FeatureGate=IrreconcilableMachineConfig
// +optional
IrreconcilableValidationOverrides IrreconcilableValidationOverrides `json:"irreconcilableValidationOverrides,omitempty,omitzero"`
+
+ // bootImageSkewEnforcement allows an admin to configure how boot image version skew is
+ // enforced on the cluster.
+ // When omitted, this will default to Automatic for clusters that support automatic boot image updates.
+ // For clusters that do not support automatic boot image updates, cluster upgrades will be disabled until
+ // a skew enforcement mode has been specified.
+ // When version skew is being enforced, cluster upgrades will be disabled until the version skew is deemed
+ // acceptable for the current release payload.
+ // +openshift:enable:FeatureGate=BootImageSkewEnforcement
+ // +optional
+ BootImageSkewEnforcement BootImageSkewEnforcementConfig `json:"bootImageSkewEnforcement,omitempty,omitzero"`
}
+// BootImageSkewEnforcementConfig is used to configure how boot image version skew is enforced on the cluster.
+// +kubebuilder:validation:XValidation:rule="has(self.mode) && (self.mode =='Manual') ? has(self.manual) : !has(self.manual)",message="manual is required when mode is Manual, and forbidden otherwise"
+// +union
+type BootImageSkewEnforcementConfig struct {
+ // mode determines the underlying behavior of skew enforcement mechanism.
+ // Valid values are Manual and None.
+ // Manual means that the cluster admin is expected to perform manual boot image updates and store the OCP
+ // & RHCOS version associated with the last boot image update in the manual field.
+ // In Manual mode, the MCO will prevent upgrades when the boot image skew exceeds the
+ // skew limit described by the release image.
+ // None means that the MCO will no longer monitor the boot image skew. This may affect
+ // the cluster's ability to scale.
+ // This field is required.
+ // +unionDiscriminator
+ // +required
+ Mode BootImageSkewEnforcementConfigMode `json:"mode,omitempty"`
+
+ // manual describes the current boot image of the cluster.
+ // This should be set to the oldest boot image used amongst all machine resources in the cluster.
+ // This must include either the RHCOS version of the boot image or the OCP release version which shipped with that
+ // RHCOS boot image.
+ // Required when mode is set to "Manual" and forbidden otherwise.
+ // +optional
+ Manual ClusterBootImageManual `json:"manual,omitempty,omitzero"`
+}
+
+// ClusterBootImageManual is used to describe the cluster boot image in Manual mode.
+// +kubebuilder:validation:XValidation:rule="has(self.mode) && (self.mode =='OCPVersion') ? has(self.ocpVersion) : !has(self.ocpVersion)",message="ocpVersion is required when mode is OCPVersion, and forbidden otherwise"
+// +kubebuilder:validation:XValidation:rule="has(self.mode) && (self.mode =='RHCOSVersion') ? has(self.rhcosVersion) : !has(self.rhcosVersion)",message="rhcosVersion is required when mode is RHCOSVersion, and forbidden otherwise"
+// +union
+type ClusterBootImageManual struct {
+ // mode is used to configure which boot image field is defined in Manual mode.
+ // Valid values are OCPVersion and RHCOSVersion.
+ // OCPVersion means that the cluster admin is expected to set the OCP version associated with the last boot image update
+ // in the OCPVersion field.
+ // RHCOSVersion means that the cluster admin is expected to set the RHCOS version associated with the last boot image update
+ // in the RHCOSVersion field.
+ // This field is required.
+ // +unionDiscriminator
+ // +required
+ Mode ClusterBootImageManualMode `json:"mode,omitempty"`
+
+ // ocpVersion provides a string which represents the OCP version of the boot image.
+ // This field must match the OCP semver compatible format of x.y.z. This field must be between
+ // 5 and 10 characters long.
+ // Required when mode is set to "OCPVersion" and forbidden otherwise.
+ // +kubebuilder:validation:XValidation:rule="self.matches('^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$')",message="ocpVersion must match the OCP semver compatible format of x.y.z"
+ // +kubebuilder:validation:MaxLength:=10
+ // +kubebuilder:validation:MinLength:=5
+ // +optional
+ OCPVersion string `json:"ocpVersion,omitempty"`
+
+ // rhcosVersion provides a string which represents the RHCOS version of the boot image
+ // This field must match rhcosVersion formatting of [major].[minor].[datestamp(YYYYMMDD)]-[buildnumber] or the legacy
+ // format of [major].[minor].[timestamp(YYYYMMDDHHmm)]-[buildnumber]. This field must be between
+ // 14 and 21 characters long.
+ // Required when mode is set to "RHCOSVersion" and forbidden otherwise.
+ // +kubebuilder:validation:XValidation:rule="self.matches('^[0-9]+\\\\.[0-9]+\\\\.([0-9]{8}|[0-9]{12})-[0-9]+$')",message="rhcosVersion must match format [major].[minor].[datestamp(YYYYMMDD)]-[buildnumber] or must match legacy format [major].[minor].[timestamp(YYYYMMDDHHmm)]-[buildnumber]"
+ // +kubebuilder:validation:MaxLength:=21
+ // +kubebuilder:validation:MinLength:=14
+ // +optional
+ RHCOSVersion string `json:"rhcosVersion,omitempty"`
+}
+
+// ClusterBootImageManualMode is a string enum used to define the cluster's boot image in manual mode.
+// +kubebuilder:validation:Enum:="OCPVersion";"RHCOSVersion"
+type ClusterBootImageManualMode string
+
+const (
+ // OCPVersion represents a configuration mode used to define the OCPVersion.
+ ClusterBootImageSpecModeOCPVersion ClusterBootImageManualMode = "OCPVersion"
+
+ // RHCOSVersion represents a configuration mode used to define the RHCOSVersion.
+ ClusterBootImageSpecModeRHCOSVersion ClusterBootImageManualMode = "RHCOSVersion"
+)
+
+// BootImageSkewEnforcementStatus is the type for the status object. It represents the cluster defaults when
+// the boot image skew enforcement configuration is undefined and reflects the actual configuration when it is defined.
+// +kubebuilder:validation:XValidation:rule="has(self.mode) && (self.mode == 'Automatic') ? has(self.automatic) : !has(self.automatic)",message="automatic is required when mode is Automatic, and forbidden otherwise"
+// +kubebuilder:validation:XValidation:rule="has(self.mode) && (self.mode == 'Manual') ? has(self.manual) : !has(self.manual)",message="manual is required when mode is Manual, and forbidden otherwise"
+// +union
+type BootImageSkewEnforcementStatus struct {
+ // mode determines the underlying behavior of skew enforcement mechanism.
+ // Valid values are Automatic, Manual and None.
+ // Automatic means that the MCO will perform boot image updates and store the
+ // OCP & RHCOS version associated with the last boot image update in the automatic field.
+ // Manual means that the cluster admin is expected to perform manual boot image updates and store the OCP
+ // & RHCOS version associated with the last boot image update in the manual field.
+ // In Automatic and Manual mode, the MCO will prevent upgrades when the boot image skew exceeds the
+ // skew limit described by the release image.
+ // None means that the MCO will no longer monitor the boot image skew. This may affect
+ // the cluster's ability to scale.
+ // This field is required.
+ // +unionDiscriminator
+ // +required
+ Mode BootImageSkewEnforcementModeStatus `json:"mode,omitempty"`
+
+ // automatic describes the current boot image of the cluster.
+ // This will be populated by the MCO when performing boot image updates. This value will be compared against
+ // the cluster's skew limit to determine skew compliance.
+ // Required when mode is set to "Automatic" and forbidden otherwise.
+ // +optional
+ Automatic ClusterBootImageAutomatic `json:"automatic,omitempty,omitzero"`
+
+ // manual describes the current boot image of the cluster.
+ // This will be populated by the MCO using the values provided in the spec.bootImageSkewEnforcement.manual field.
+ // This value will be compared against the cluster's skew limit to determine skew compliance.
+ // Required when mode is set to "Manual" and forbidden otherwise.
+ // +optional
+ Manual ClusterBootImageManual `json:"manual,omitempty,omitzero"`
+}
+
+// ClusterBootImageAutomatic is used to describe the cluster boot image in Automatic mode. It stores the RHCOS version of the
+// boot image and the OCP release version which shipped with that RHCOS boot image. At least one of these values are required.
+// If ocpVersion and rhcosVersion are defined, both values will be used for checking skew compliance.
+// If only ocpVersion is defined, only that value will be used for checking skew compliance.
+// If only rhcosVersion is defined, only that value will be used for checking skew compliance.
+// +kubebuilder:validation:XValidation:rule="has(self.ocpVersion) || has(self.rhcosVersion)",message="at least one of ocpVersion or rhcosVersion is required"
+// +kubebuilder:validation:MinProperties=1
+type ClusterBootImageAutomatic struct {
+ // ocpVersion provides a string which represents the OCP version of the boot image.
+ // This field must match the OCP semver compatible format of x.y.z. This field must be between
+ // 5 and 10 characters long.
+ // +kubebuilder:validation:XValidation:rule="self.matches('^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$')",message="ocpVersion must match the OCP semver compatible format of x.y.z"
+ // +kubebuilder:validation:MaxLength:=10
+ // +kubebuilder:validation:MinLength:=5
+ // +optional
+ OCPVersion string `json:"ocpVersion,omitempty"`
+
+ // rhcosVersion provides a string which represents the RHCOS version of the boot image
+ // This field must match rhcosVersion formatting of [major].[minor].[datestamp(YYYYMMDD)]-[buildnumber] or the legacy
+ // format of [major].[minor].[timestamp(YYYYMMDDHHmm)]-[buildnumber]. This field must be between
+ // 14 and 21 characters long.
+ // +kubebuilder:validation:XValidation:rule="self.matches('^[0-9]+\\\\.[0-9]+\\\\.([0-9]{8}|[0-9]{12})-[0-9]+$')",message="rhcosVersion must match format [major].[minor].[datestamp(YYYYMMDD)]-[buildnumber] or must match legacy format [major].[minor].[timestamp(YYYYMMDDHHmm)]-[buildnumber]"
+ // +kubebuilder:validation:MaxLength:=21
+ // +kubebuilder:validation:MinLength:=14
+ // +optional
+ RHCOSVersion string `json:"rhcosVersion,omitempty"`
+}
+
+// BootImageSkewEnforcementConfigMode is a string enum used to configure the cluster's boot image skew enforcement mode.
+// +kubebuilder:validation:Enum:="Manual";"None"
+type BootImageSkewEnforcementConfigMode string
+
+const (
+ // Manual represents a configuration mode that allows manual skew enforcement.
+ BootImageSkewEnforcementConfigModeManual BootImageSkewEnforcementConfigMode = "Manual"
+
+ // None represents a configuration mode that disables boot image skew enforcement.
+ BootImageSkewEnforcementConfigModeNone BootImageSkewEnforcementConfigMode = "None"
+)
+
+// BootImageSkewEnforcementModeStatus is a string enum used to indicate the cluster's boot image skew enforcement mode.
+// +kubebuilder:validation:Enum:="Automatic";"Manual";"None"
+type BootImageSkewEnforcementModeStatus string
+
+const (
+ // Automatic represents a configuration mode that allows automatic skew enforcement.
+ BootImageSkewEnforcementModeStatusAutomatic BootImageSkewEnforcementModeStatus = "Automatic"
+
+ // Manual represents a configuration mode that allows manual skew enforcement.
+ BootImageSkewEnforcementModeStatusManual BootImageSkewEnforcementModeStatus = "Manual"
+
+ // None represents a configuration mode that disables boot image skew enforcement.
+ BootImageSkewEnforcementModeStatusNone BootImageSkewEnforcementModeStatus = "None"
+)
+
type MachineConfigurationStatus struct {
// observedGeneration is the last generation change you've dealt with
// +optional
@@ -111,6 +290,16 @@ type MachineConfigurationStatus struct {
// +openshift:enable:FeatureGate=ManagedBootImages
// +optional
ManagedBootImagesStatus ManagedBootImages `json:"managedBootImagesStatus"`
+
+ // bootImageSkewEnforcementStatus reflects what the latest cluster-validated boot image skew enforcement
+ // configuration is and will be used by Machine Config Controller while performing boot image skew enforcement.
+ // When omitted, the MCO has no knowledge of how to enforce boot image skew. When the MCO does not know how
+ // boot image skew should be enforced, cluster upgrades will be blocked until it can either automatically
+ // determine skew enforcement or there is an explicit skew enforcement configuration provided in the
+ // spec.bootImageSkewEnforcement field.
+ // +openshift:enable:FeatureGate=BootImageSkewEnforcement
+ // +optional
+ BootImageSkewEnforcementStatus BootImageSkewEnforcementStatus `json:"bootImageSkewEnforcementStatus,omitempty,omitzero"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
@@ -177,10 +366,12 @@ type ManagedBootImages struct {
// MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information
// such as the resource type and the API Group of the resource. It also provides granular control via the selection field.
+// +openshift:validation:FeatureGateAwareXValidation:requiredFeatureGate=ManagedBootImages;ManagedBootImagesCPMS,rule="self.resource != 'controlplanemachinesets' || self.selection.mode == 'All' || self.selection.mode == 'None'", message="Only All or None selection mode is permitted for ControlPlaneMachineSets"
type MachineManager struct {
// resource is the machine management resource's type.
- // The only current valid value is machinesets.
+ // Valid values are machinesets and controlplanemachinesets.
// machinesets means that the machine manager will only register resources of the kind MachineSet.
+ // controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.
// +required
Resource MachineManagerMachineSetsResourceType `json:"resource"`
@@ -199,9 +390,10 @@ type MachineManager struct {
// +union
type MachineManagerSelector struct {
// mode determines how machine managers will be selected for updates.
- // Valid values are All and Partial.
+ // Valid values are All, Partial and None.
// All means that every resource matched by the machine manager will be updated.
// Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated.
+ // Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster.
// None means that every resource matched by the machine manager will not be updated.
// +unionDiscriminator
// +required
@@ -238,12 +430,15 @@ const (
// MachineManagerManagedResourceType is a string enum used in the MachineManager type to describe the resource
// type to be registered.
-// +kubebuilder:validation:Enum:="machinesets"
+// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImages,enum=machinesets
+// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImages;ManagedBootImagesCPMS,enum=machinesets;controlplanemachinesets
type MachineManagerMachineSetsResourceType string
const (
// MachineSets represent the MachineSet resource type, which manage a group of machines and belong to the Openshift machine API group.
MachineSets MachineManagerMachineSetsResourceType = "machinesets"
+ // ControlPlaneMachineSets represent the ControlPlaneMachineSets resource type, which manage a group of control-plane machines and belong to the Openshift machine API group.
+ ControlPlaneMachineSets MachineManagerMachineSetsResourceType = "controlplanemachinesets"
)
// MachineManagerManagedAPIGroupType is a string enum used in in the MachineManager type to describe the APIGroup
@@ -253,7 +448,7 @@ type MachineManagerMachineSetsAPIGroupType string
const (
// MachineAPI represent the traditional MAPI Group that a machineset may belong to.
- // This feature only supports MAPI machinesets at this time.
+ // This feature only supports MAPI machinesets and controlplanemachinesets at this time.
MachineAPI MachineManagerMachineSetsAPIGroupType = "machine.openshift.io"
)
diff --git a/vendor/github.com/openshift/api/operator/v1/zz_generated.deepcopy.go b/vendor/github.com/openshift/api/operator/v1/zz_generated.deepcopy.go
index d2e74e6838..fd83694c23 100644
--- a/vendor/github.com/openshift/api/operator/v1/zz_generated.deepcopy.go
+++ b/vendor/github.com/openshift/api/operator/v1/zz_generated.deepcopy.go
@@ -390,6 +390,41 @@ func (in *AzureDiskEncryptionSet) DeepCopy() *AzureDiskEncryptionSet {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *BootImageSkewEnforcementConfig) DeepCopyInto(out *BootImageSkewEnforcementConfig) {
+ *out = *in
+ out.Manual = in.Manual
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BootImageSkewEnforcementConfig.
+func (in *BootImageSkewEnforcementConfig) DeepCopy() *BootImageSkewEnforcementConfig {
+ if in == nil {
+ return nil
+ }
+ out := new(BootImageSkewEnforcementConfig)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *BootImageSkewEnforcementStatus) DeepCopyInto(out *BootImageSkewEnforcementStatus) {
+ *out = *in
+ out.Automatic = in.Automatic
+ out.Manual = in.Manual
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BootImageSkewEnforcementStatus.
+func (in *BootImageSkewEnforcementStatus) DeepCopy() *BootImageSkewEnforcementStatus {
+ if in == nil {
+ return nil
+ }
+ out := new(BootImageSkewEnforcementStatus)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CSIDriverConfigSpec) DeepCopyInto(out *CSIDriverConfigSpec) {
*out = *in
@@ -676,6 +711,38 @@ func (in *CloudCredentialStatus) DeepCopy() *CloudCredentialStatus {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterBootImageAutomatic) DeepCopyInto(out *ClusterBootImageAutomatic) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterBootImageAutomatic.
+func (in *ClusterBootImageAutomatic) DeepCopy() *ClusterBootImageAutomatic {
+ if in == nil {
+ return nil
+ }
+ out := new(ClusterBootImageAutomatic)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterBootImageManual) DeepCopyInto(out *ClusterBootImageManual) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterBootImageManual.
+func (in *ClusterBootImageManual) DeepCopy() *ClusterBootImageManual {
+ if in == nil {
+ return nil
+ }
+ out := new(ClusterBootImageManual)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterCSIDriver) DeepCopyInto(out *ClusterCSIDriver) {
*out = *in
@@ -3243,6 +3310,7 @@ func (in *MachineConfigurationSpec) DeepCopyInto(out *MachineConfigurationSpec)
in.ManagedBootImages.DeepCopyInto(&out.ManagedBootImages)
in.NodeDisruptionPolicy.DeepCopyInto(&out.NodeDisruptionPolicy)
in.IrreconcilableValidationOverrides.DeepCopyInto(&out.IrreconcilableValidationOverrides)
+ out.BootImageSkewEnforcement = in.BootImageSkewEnforcement
return
}
@@ -3268,6 +3336,7 @@ func (in *MachineConfigurationStatus) DeepCopyInto(out *MachineConfigurationStat
}
in.NodeDisruptionPolicyStatus.DeepCopyInto(&out.NodeDisruptionPolicyStatus)
in.ManagedBootImagesStatus.DeepCopyInto(&out.ManagedBootImagesStatus)
+ out.BootImageSkewEnforcementStatus = in.BootImageSkewEnforcementStatus
return
}
diff --git a/vendor/github.com/openshift/api/operator/v1/zz_generated.featuregated-crd-manifests.yaml b/vendor/github.com/openshift/api/operator/v1/zz_generated.featuregated-crd-manifests.yaml
index a893b0e0f3..613d32b5e8 100644
--- a/vendor/github.com/openshift/api/operator/v1/zz_generated.featuregated-crd-manifests.yaml
+++ b/vendor/github.com/openshift/api/operator/v1/zz_generated.featuregated-crd-manifests.yaml
@@ -175,10 +175,7 @@ ingresscontrollers.operator.openshift.io:
CRDName: ingresscontrollers.operator.openshift.io
Capability: Ingress
Category: ""
- FeatureGates:
- - IngressControllerLBSubnetsAWS
- - SetEIPForNLBIngressController
- - SetEIPForNLBIngressController+IngressControllerLBSubnetsAWS
+ FeatureGates: []
FilenameOperatorName: ingress
FilenameOperatorOrdering: "00"
FilenameRunLevel: "0000_50"
@@ -305,8 +302,10 @@ machineconfigurations.operator.openshift.io:
Capability: ""
Category: ""
FeatureGates:
+ - BootImageSkewEnforcement
- IrreconcilableMachineConfig
- ManagedBootImages
+ - ManagedBootImages+ManagedBootImagesCPMS
FilenameOperatorName: machine-config
FilenameOperatorOrdering: "01"
FilenameRunLevel: "0000_80"
diff --git a/vendor/github.com/openshift/api/operator/v1/zz_generated.swagger_doc_generated.go b/vendor/github.com/openshift/api/operator/v1/zz_generated.swagger_doc_generated.go
index 206dd98c43..55e9dd8d7b 100644
--- a/vendor/github.com/openshift/api/operator/v1/zz_generated.swagger_doc_generated.go
+++ b/vendor/github.com/openshift/api/operator/v1/zz_generated.swagger_doc_generated.go
@@ -1379,6 +1379,48 @@ func (KubeStorageVersionMigratorList) SwaggerDoc() map[string]string {
return map_KubeStorageVersionMigratorList
}
+var map_BootImageSkewEnforcementConfig = map[string]string{
+ "": "BootImageSkewEnforcementConfig is used to configure how boot image version skew is enforced on the cluster.",
+ "mode": "mode determines the underlying behavior of skew enforcement mechanism. Valid values are Manual and None. Manual means that the cluster admin is expected to perform manual boot image updates and store the OCP & RHCOS version associated with the last boot image update in the manual field. In Manual mode, the MCO will prevent upgrades when the boot image skew exceeds the skew limit described by the release image. None means that the MCO will no longer monitor the boot image skew. This may affect the cluster's ability to scale. This field is required.",
+ "manual": "manual describes the current boot image of the cluster. This should be set to the oldest boot image used amongst all machine resources in the cluster. This must include either the RHCOS version of the boot image or the OCP release version which shipped with that RHCOS boot image. Required when mode is set to \"Manual\" and forbidden otherwise.",
+}
+
+func (BootImageSkewEnforcementConfig) SwaggerDoc() map[string]string {
+ return map_BootImageSkewEnforcementConfig
+}
+
+var map_BootImageSkewEnforcementStatus = map[string]string{
+ "": "BootImageSkewEnforcementStatus is the type for the status object. It represents the cluster defaults when the boot image skew enforcement configuration is undefined and reflects the actual configuration when it is defined.",
+ "mode": "mode determines the underlying behavior of skew enforcement mechanism. Valid values are Automatic, Manual and None. Automatic means that the MCO will perform boot image updates and store the OCP & RHCOS version associated with the last boot image update in the automatic field. Manual means that the cluster admin is expected to perform manual boot image updates and store the OCP & RHCOS version associated with the last boot image update in the manual field. In Automatic and Manual mode, the MCO will prevent upgrades when the boot image skew exceeds the skew limit described by the release image. None means that the MCO will no longer monitor the boot image skew. This may affect the cluster's ability to scale. This field is required.",
+ "automatic": "automatic describes the current boot image of the cluster. This will be populated by the MCO when performing boot image updates. This value will be compared against the cluster's skew limit to determine skew compliance. Required when mode is set to \"Automatic\" and forbidden otherwise.",
+ "manual": "manual describes the current boot image of the cluster. This will be populated by the MCO using the values provided in the spec.bootImageSkewEnforcement.manual field. This value will be compared against the cluster's skew limit to determine skew compliance. Required when mode is set to \"Manual\" and forbidden otherwise.",
+}
+
+func (BootImageSkewEnforcementStatus) SwaggerDoc() map[string]string {
+ return map_BootImageSkewEnforcementStatus
+}
+
+var map_ClusterBootImageAutomatic = map[string]string{
+ "": "ClusterBootImageAutomatic is used to describe the cluster boot image in Automatic mode. It stores the RHCOS version of the boot image and the OCP release version which shipped with that RHCOS boot image. At least one of these values are required. If ocpVersion and rhcosVersion are defined, both values will be used for checking skew compliance. If only ocpVersion is defined, only that value will be used for checking skew compliance. If only rhcosVersion is defined, only that value will be used for checking skew compliance.",
+ "ocpVersion": "ocpVersion provides a string which represents the OCP version of the boot image. This field must match the OCP semver compatible format of x.y.z. This field must be between 5 and 10 characters long.",
+ "rhcosVersion": "rhcosVersion provides a string which represents the RHCOS version of the boot image This field must match rhcosVersion formatting of [major].[minor].[datestamp(YYYYMMDD)]-[buildnumber] or the legacy format of [major].[minor].[timestamp(YYYYMMDDHHmm)]-[buildnumber]. This field must be between 14 and 21 characters long.",
+}
+
+func (ClusterBootImageAutomatic) SwaggerDoc() map[string]string {
+ return map_ClusterBootImageAutomatic
+}
+
+var map_ClusterBootImageManual = map[string]string{
+ "": "ClusterBootImageManual is used to describe the cluster boot image in Manual mode.",
+ "mode": "mode is used to configure which boot image field is defined in Manual mode. Valid values are OCPVersion and RHCOSVersion. OCPVersion means that the cluster admin is expected to set the OCP version associated with the last boot image update in the OCPVersion field. RHCOSVersion means that the cluster admin is expected to set the RHCOS version associated with the last boot image update in the RHCOSVersion field. This field is required.",
+ "ocpVersion": "ocpVersion provides a string which represents the OCP version of the boot image. This field must match the OCP semver compatible format of x.y.z. This field must be between 5 and 10 characters long. Required when mode is set to \"OCPVersion\" and forbidden otherwise.",
+ "rhcosVersion": "rhcosVersion provides a string which represents the RHCOS version of the boot image This field must match rhcosVersion formatting of [major].[minor].[datestamp(YYYYMMDD)]-[buildnumber] or the legacy format of [major].[minor].[timestamp(YYYYMMDDHHmm)]-[buildnumber]. This field must be between 14 and 21 characters long. Required when mode is set to \"RHCOSVersion\" and forbidden otherwise.",
+}
+
+func (ClusterBootImageManual) SwaggerDoc() map[string]string {
+ return map_ClusterBootImageManual
+}
+
var map_IrreconcilableValidationOverrides = map[string]string{
"": "IrreconcilableValidationOverrides holds the irreconcilable validations overrides to be applied on each rendered MachineConfig generation.",
"storage": "storage can be used to allow making irreconcilable changes to the selected sections under the `spec.config.storage` field of MachineConfig CRs It must have at least one item, may not exceed 3 items and must not contain duplicates. Allowed element values are \"Disks\", \"FileSystems\", \"Raid\" and omitted. When contains \"Disks\" changes to the `spec.config.storage.disks` section of MachineConfig CRs are allowed. When contains \"FileSystems\" changes to the `spec.config.storage.filesystems` section of MachineConfig CRs are allowed. When contains \"Raid\" changes to the `spec.config.storage.raid` section of MachineConfig CRs are allowed. When omitted changes to the `spec.config.storage` section are forbidden.",
@@ -1413,6 +1455,7 @@ var map_MachineConfigurationSpec = map[string]string{
"managedBootImages": "managedBootImages allows configuration for the management of boot images for machine resources within the cluster. This configuration allows users to select resources that should be updated to the latest boot images during cluster upgrades, ensuring that new machines always boot with the current cluster version's boot image. When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time. The default for each machine manager mode is All for GCP and AWS platforms, and None for all other platforms.",
"nodeDisruptionPolicy": "nodeDisruptionPolicy allows an admin to set granular node disruption actions for MachineConfig-based updates, such as drains, service reloads, etc. Specifying this will allow for less downtime when doing small configuration updates to the cluster. This configuration has no effect on cluster upgrades which will still incur node disruption where required.",
"irreconcilableValidationOverrides": "irreconcilableValidationOverrides is an optional field that can used to make changes to a MachineConfig that cannot be applied to existing nodes. When specified, the fields configured with validation overrides will no longer reject changes to those respective fields due to them not being able to be applied to existing nodes. Only newly provisioned nodes will have these configurations applied. Existing nodes will report observed configuration differences in their MachineConfigNode status.",
+ "bootImageSkewEnforcement": "bootImageSkewEnforcement allows an admin to configure how boot image version skew is enforced on the cluster. When omitted, this will default to Automatic for clusters that support automatic boot image updates. For clusters that do not support automatic boot image updates, cluster upgrades will be disabled until a skew enforcement mode has been specified. When version skew is being enforced, cluster upgrades will be disabled until the version skew is deemed acceptable for the current release payload.",
}
func (MachineConfigurationSpec) SwaggerDoc() map[string]string {
@@ -1420,10 +1463,11 @@ func (MachineConfigurationSpec) SwaggerDoc() map[string]string {
}
var map_MachineConfigurationStatus = map[string]string{
- "observedGeneration": "observedGeneration is the last generation change you've dealt with",
- "conditions": "conditions is a list of conditions and their status",
- "nodeDisruptionPolicyStatus": "nodeDisruptionPolicyStatus status reflects what the latest cluster-validated policies are, and will be used by the Machine Config Daemon during future node updates.",
- "managedBootImagesStatus": "managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is and will be used by Machine Config Controller while performing boot image updates.",
+ "observedGeneration": "observedGeneration is the last generation change you've dealt with",
+ "conditions": "conditions is a list of conditions and their status",
+ "nodeDisruptionPolicyStatus": "nodeDisruptionPolicyStatus status reflects what the latest cluster-validated policies are, and will be used by the Machine Config Daemon during future node updates.",
+ "managedBootImagesStatus": "managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is and will be used by Machine Config Controller while performing boot image updates.",
+ "bootImageSkewEnforcementStatus": "bootImageSkewEnforcementStatus reflects what the latest cluster-validated boot image skew enforcement configuration is and will be used by Machine Config Controller while performing boot image skew enforcement. When omitted, the MCO has no knowledge of how to enforce boot image skew. When the MCO does not know how boot image skew should be enforced, cluster upgrades will be blocked until it can either automatically determine skew enforcement or there is an explicit skew enforcement configuration provided in the spec.bootImageSkewEnforcement field.",
}
func (MachineConfigurationStatus) SwaggerDoc() map[string]string {
@@ -1432,7 +1476,7 @@ func (MachineConfigurationStatus) SwaggerDoc() map[string]string {
var map_MachineManager = map[string]string{
"": "MachineManager describes a target machine resource that is registered for boot image updates. It stores identifying information such as the resource type and the API Group of the resource. It also provides granular control via the selection field.",
- "resource": "resource is the machine management resource's type. The only current valid value is machinesets. machinesets means that the machine manager will only register resources of the kind MachineSet.",
+ "resource": "resource is the machine management resource's type. Valid values are machinesets and controlplanemachinesets. machinesets means that the machine manager will only register resources of the kind MachineSet. controlplanemachinesets means that the machine manager will only register resources of the kind ControlPlaneMachineSet.",
"apiGroup": "apiGroup is name of the APIGroup that the machine management resource belongs to. The only current valid value is machine.openshift.io. machine.openshift.io means that the machine manager will only register resources that belong to OpenShift machine API group.",
"selection": "selection allows granular control of the machine management resources that will be registered for boot image updates.",
}
@@ -1442,7 +1486,7 @@ func (MachineManager) SwaggerDoc() map[string]string {
}
var map_MachineManagerSelector = map[string]string{
- "mode": "mode determines how machine managers will be selected for updates. Valid values are All and Partial. All means that every resource matched by the machine manager will be updated. Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated. None means that every resource matched by the machine manager will not be updated.",
+ "mode": "mode determines how machine managers will be selected for updates. Valid values are All, Partial and None. All means that every resource matched by the machine manager will be updated. Partial requires specified selector(s) and allows customisation of which resources matched by the machine manager will be updated. Partial is not permitted for the controlplanemachinesets resource type as they are a singleton within the cluster. None means that every resource matched by the machine manager will not be updated.",
"partial": "partial provides label selector(s) that can be used to match machine management resources. Only permitted when mode is set to \"Partial\".",
}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 73942bad04..0decbcccb9 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -995,7 +995,7 @@ github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo
github.com/openshift-eng/openshift-tests-extension/pkg/junit
github.com/openshift-eng/openshift-tests-extension/pkg/util/sets
github.com/openshift-eng/openshift-tests-extension/pkg/version
-# github.com/openshift/api v0.0.0-20250901120840-a638ff2e96fb
+# github.com/openshift/api v0.0.0-20251009093019-7837a801e8c1
## explicit; go 1.24.0
github.com/openshift/api
github.com/openshift/api/annotations