mirror of https://github.com/knative/serving.git
Move DomainMapping feature to beta (#11573)
* Move DomainMapping feature to beta Adds the domain mapping yamls to config/core so that they are built in to the main serving yaml. This does not combine the controller and webhook binaries (this will only happen when the feature is GA) so it is still possible to opt out of domain mapping by reducing replica count of the relevant controller/webhook to zero and removing access to the CRD. * Dont build domainmapping yaml since its built in to core yaml * Cleanup dangling reference to removed yaml * Update codegen * Move tests to beta suite
This commit is contained in:
parent
f6c40afa39
commit
478b5e7882
|
@ -0,0 +1,151 @@
|
|||
# Copyright 2020 The Knative Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: domainmappings.serving.knative.dev
|
||||
labels:
|
||||
serving.knative.dev/release: devel
|
||||
knative.dev/crd-install: "true"
|
||||
spec:
|
||||
group: serving.knative.dev
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: DomainMapping is a mapping from a custom hostname to an Addressable.
|
||||
type: object
|
||||
properties:
|
||||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/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 is the desired state of the DomainMapping. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'
|
||||
type: object
|
||||
required:
|
||||
- ref
|
||||
properties:
|
||||
ref:
|
||||
description: "Ref specifies the target of the Domain Mapping. \n The object identified by the Ref must be an Addressable with a URL of the form `{name}.{namespace}.{domain}` where `{domain}` is the cluster domain, and `{name}` and `{namespace}` are the name and namespace of a Kubernetes Service. \n This contract is satisfied by Knative types such as Knative Services and Knative Routes, and by Kubernetes Services."
|
||||
type: object
|
||||
required:
|
||||
- kind
|
||||
- name
|
||||
properties:
|
||||
apiVersion:
|
||||
description: API version of the referent.
|
||||
type: string
|
||||
group:
|
||||
description: 'Group of the API, without the version of the group. This can be used as an alternative to the APIVersion, and then resolved using ResolveGroup. Note: This API is EXPERIMENTAL and might break anytime. For more details: https://github.com/knative/eventing/issues/5086'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
||||
type: string
|
||||
namespace:
|
||||
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ This is optional field, it gets defaulted to the object holding it if left out.'
|
||||
type: string
|
||||
tls:
|
||||
description: TLS allows the DomainMapping to terminate TLS traffic with an existing secret.
|
||||
type: object
|
||||
required:
|
||||
- secretName
|
||||
properties:
|
||||
secretName:
|
||||
description: SecretName is the name of the existing secret used to terminate TLS traffic.
|
||||
type: string
|
||||
status:
|
||||
description: 'Status is the current state of the DomainMapping. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'
|
||||
type: object
|
||||
properties:
|
||||
address:
|
||||
description: Address holds the information needed for a DomainMapping to be the target of an event.
|
||||
type: object
|
||||
properties:
|
||||
url:
|
||||
type: string
|
||||
annotations:
|
||||
description: Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.
|
||||
type: object
|
||||
additionalProperties:
|
||||
type: string
|
||||
conditions:
|
||||
description: Conditions the latest available observations of a resource's current state.
|
||||
type: array
|
||||
items:
|
||||
description: 'Condition defines a readiness condition for a Knative resource. See: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties'
|
||||
type: object
|
||||
required:
|
||||
- status
|
||||
- type
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).
|
||||
type: string
|
||||
format: date-time
|
||||
message:
|
||||
description: A human readable message indicating details about the transition.
|
||||
type: string
|
||||
reason:
|
||||
description: The reason for the condition's last transition.
|
||||
type: string
|
||||
severity:
|
||||
description: Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of True, False, Unknown.
|
||||
type: string
|
||||
type:
|
||||
description: Type of condition.
|
||||
type: string
|
||||
observedGeneration:
|
||||
description: ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.
|
||||
type: integer
|
||||
format: int64
|
||||
url:
|
||||
description: URL is the URL of this DomainMapping.
|
||||
type: string
|
||||
additionalPrinterColumns:
|
||||
- name: URL
|
||||
type: string
|
||||
jsonPath: .status.url
|
||||
- name: Ready
|
||||
type: string
|
||||
jsonPath: ".status.conditions[?(@.type=='Ready')].status"
|
||||
- name: Reason
|
||||
type: string
|
||||
jsonPath: ".status.conditions[?(@.type=='Ready')].reason"
|
||||
names:
|
||||
kind: DomainMapping
|
||||
plural: domainmappings
|
||||
singular: domainmapping
|
||||
categories:
|
||||
- all
|
||||
- knative
|
||||
- serving
|
||||
shortNames:
|
||||
- dm
|
||||
scope: Namespaced
|
|
@ -1,58 +0,0 @@
|
|||
# Copyright 2020 The Knative Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: domainmappings.serving.knative.dev
|
||||
labels:
|
||||
serving.knative.dev/release: devel
|
||||
knative.dev/crd-install: "true"
|
||||
spec:
|
||||
group: serving.knative.dev
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
# this is a work around so we don't need to flush out the
|
||||
# schema for each version at this time
|
||||
#
|
||||
# see issue: https://github.com/knative/serving/issues/912
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
additionalPrinterColumns:
|
||||
- name: URL
|
||||
type: string
|
||||
jsonPath: .status.url
|
||||
- name: Ready
|
||||
type: string
|
||||
jsonPath: ".status.conditions[?(@.type=='Ready')].status"
|
||||
- name: Reason
|
||||
type: string
|
||||
jsonPath: ".status.conditions[?(@.type=='Ready')].reason"
|
||||
names:
|
||||
kind: DomainMapping
|
||||
plural: domainmappings
|
||||
singular: domainmapping
|
||||
categories:
|
||||
- all
|
||||
- knative
|
||||
- serving
|
||||
shortNames:
|
||||
- dm
|
||||
scope: Namespaced
|
|
@ -1,19 +0,0 @@
|
|||
/*
|
||||
Copyright 2020 The Knative Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package resources is a placeholder that allows us to pull in config files
|
||||
// via go mod vendor.
|
||||
package resources
|
|
@ -1,19 +0,0 @@
|
|||
/*
|
||||
Copyright 2020 The Knative Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package domainmapping is a placeholder that allows us to pull in config files
|
||||
// via go mod vendor.
|
||||
package domainmapping
|
|
@ -1,19 +0,0 @@
|
|||
/*
|
||||
Copyright 2020 The Knative Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package webhooks is a placeholder that allows us to pull in config files
|
||||
// via go mod vendor.
|
||||
package webhooks
|
|
@ -53,8 +53,6 @@ readonly SERVING_CORE_YAML=${YAML_OUTPUT_DIR}/serving-core.yaml
|
|||
readonly SERVING_DEFAULT_DOMAIN_YAML=${YAML_OUTPUT_DIR}/serving-default-domain.yaml
|
||||
readonly SERVING_STORAGE_VERSION_MIGRATE_YAML=${YAML_OUTPUT_DIR}/serving-storage-version-migration.yaml
|
||||
readonly SERVING_HPA_YAML=${YAML_OUTPUT_DIR}/serving-hpa.yaml
|
||||
readonly SERVING_DOMAINMAPPING_YAML=${YAML_OUTPUT_DIR}/serving-domainmapping.yaml
|
||||
readonly SERVING_DOMAINMAPPING_CRD_YAML=${YAML_OUTPUT_DIR}/serving-domainmapping-crds.yaml
|
||||
readonly SERVING_CRD_YAML=${YAML_OUTPUT_DIR}/serving-crds.yaml
|
||||
readonly SERVING_NSCERT_YAML=${YAML_OUTPUT_DIR}/serving-nscert.yaml
|
||||
readonly SERVING_POST_INSTALL_JOBS_YAML=${YAML_OUTPUT_DIR}/serving-post-install-jobs.yaml
|
||||
|
@ -100,10 +98,6 @@ ko resolve ${KO_YAML_FLAGS} -f config/core/300-resources/ -f config/core/300-ima
|
|||
# Create hpa-class autoscaling related yaml
|
||||
ko resolve ${KO_YAML_FLAGS} -f config/hpa-autoscaling/ | "${LABEL_YAML_CMD[@]}" > "${SERVING_HPA_YAML}"
|
||||
|
||||
# Create domain mapping related yaml
|
||||
ko resolve ${KO_YAML_FLAGS} -R -f config/domain-mapping/ | "${LABEL_YAML_CMD[@]}" > "${SERVING_DOMAINMAPPING_YAML}"
|
||||
ko resolve ${KO_YAML_FLAGS} -f config/domain-mapping/300-resources/ | "${LABEL_YAML_CMD[@]}" > "${SERVING_DOMAINMAPPING_CRD_YAML}"
|
||||
|
||||
# Create nscert related yaml
|
||||
ko resolve ${KO_YAML_FLAGS} -f config/namespace-wildcard-certs | "${LABEL_YAML_CMD[@]}" > "${SERVING_NSCERT_YAML}"
|
||||
|
||||
|
@ -130,8 +124,6 @@ ${SERVING_DEFAULT_DOMAIN_YAML}
|
|||
${SERVING_STORAGE_VERSION_MIGRATE_YAML}
|
||||
${SERVING_POST_INSTALL_JOBS_YAML}
|
||||
${SERVING_HPA_YAML}
|
||||
${SERVING_DOMAINMAPPING_YAML}
|
||||
${SERVING_DOMAINMAPPING_CRD_YAML}
|
||||
${SERVING_CRD_YAML}
|
||||
${SERVING_NSCERT_YAML}
|
||||
EOF
|
||||
|
@ -142,8 +134,6 @@ export SERVING_DEFAULT_DOMAIN_YAML=${SERVING_DEFAULT_DOMAIN_YAML}
|
|||
export SERVING_STORAGE_VERSION_MIGRATE_YAML=${SERVING_STORAGE_VERSION_MIGRATE_YAML}
|
||||
export SERVING_POST_INSTALL_JOBS_YAML=${SERVING_POST_INSTALL_JOBS_YAML}
|
||||
export SERVING_HPA_YAML=${SERVING_HPA_YAML}
|
||||
export SERVING_DOMAINMAPPING_YAML=${SERVING_DOMAINMAPPING_YAML}
|
||||
export SERVING_DOMAINMAPPING_CRD_YAML=${SERVING_DOMAINMAPPING_CRD_YAML}
|
||||
export SERVING_CRD_YAML=${SERVING_CRD_YAML}
|
||||
export SERVING_NSCERT_YAML=${SERVING_NSCERT_YAML}
|
||||
EOF
|
||||
|
|
|
@ -35,8 +35,8 @@ import (
|
|||
)
|
||||
|
||||
func TestDomainMapping(t *testing.T) {
|
||||
if !test.ServingFlags.EnableAlphaFeatures {
|
||||
t.Skip("Alpha features not enabled")
|
||||
if !test.ServingFlags.EnableBetaFeatures {
|
||||
t.Skip("Beta features not enabled")
|
||||
}
|
||||
|
||||
t.Parallel()
|
||||
|
|
|
@ -446,7 +446,6 @@ function stage_serving_head() {
|
|||
mkdir -p "${head_post_install_dir}"
|
||||
|
||||
cp "${SERVING_CORE_YAML}" "${head_dir}"
|
||||
cp "${SERVING_DOMAINMAPPING_YAML}" "${head_dir}"
|
||||
cp "${SERVING_HPA_YAML}" "${head_dir}"
|
||||
cp "${SERVING_POST_INSTALL_JOBS_YAML}" "${head_post_install_dir}"
|
||||
}
|
||||
|
@ -461,7 +460,6 @@ function stage_serving_custom() {
|
|||
mkdir -p "${head_post_install_dir}"
|
||||
|
||||
cp "${SERVING_CORE_YAML}" "${head_dir}"
|
||||
cp "${SERVING_DOMAINMAPPING_YAML}" "${head_dir}"
|
||||
cp "${SERVING_HPA_YAML}" "${head_dir}"
|
||||
cp "${SERVING_POST_INSTALL_JOBS_YAML}" "${head_post_install_dir}"
|
||||
}
|
||||
|
@ -482,9 +480,6 @@ function stage_serving_latest() {
|
|||
wget "${url}/serving-core.yaml" -P "${latest_dir}" \
|
||||
|| fail_test "Unable to download latest knative/serving core file."
|
||||
|
||||
wget "${url}/serving-domainmapping.yaml" -P "${latest_dir}" \
|
||||
|| fail_test "Unable to download latest knative/serving domain mapping file."
|
||||
|
||||
wget "${url}/serving-hpa.yaml" -P "${latest_dir}" \
|
||||
|| fail_test "Unable to download latest knative/serving hpa file."
|
||||
|
||||
|
|
|
@ -45,8 +45,8 @@ type dmConfig struct {
|
|||
}
|
||||
|
||||
func TestDomainMappingAutoTLS(t *testing.T) {
|
||||
if !test.ServingFlags.EnableAlphaFeatures {
|
||||
t.Skip("Alpha features not enabled")
|
||||
if !test.ServingFlags.EnableBetaFeatures {
|
||||
t.Skip("Beta features not enabled")
|
||||
}
|
||||
t.Parallel()
|
||||
|
||||
|
|
|
@ -48,8 +48,8 @@ import (
|
|||
)
|
||||
|
||||
func TestBYOCertificate(t *testing.T) {
|
||||
if !test.ServingFlags.EnableAlphaFeatures {
|
||||
t.Skip("Alpha features not enabled")
|
||||
if !test.ServingFlags.EnableBetaFeatures {
|
||||
t.Skip("Beta features not enabled")
|
||||
}
|
||||
t.Parallel()
|
||||
|
||||
|
|
|
@ -43,8 +43,8 @@ const (
|
|||
)
|
||||
|
||||
func TestDomainMappingHA(t *testing.T) {
|
||||
if !test.ServingFlags.EnableAlphaFeatures {
|
||||
t.Skip("Alpha features not enabled")
|
||||
if !test.ServingFlags.EnableBetaFeatures {
|
||||
t.Skip("Beta features not enabled")
|
||||
}
|
||||
|
||||
ctx, clients := context.Background(), test.Setup(t)
|
||||
|
|
Loading…
Reference in New Issue