Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ module github.com/openshift/cluster-ingress-operator

go 1.21

toolchain go1.21.5

require (
github.com/Azure/azure-sdk-for-go v46.0.0+incompatible
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0
Expand Down Expand Up @@ -148,6 +150,6 @@ require (
// github.com/operator-framework/operator-sdk.
replace (
bitbucket.org/ww/goautoneg => github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d
github.com/openshift/api => github.com/openshift/api v0.0.0-20240108220607-355cd2586ec4
github.com/openshift/api => github.com/openshift/api v0.0.0-20240326215622-ff84c2c73227
k8s.io/client-go => k8s.io/client-go v0.29.0
)
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1645,8 +1645,8 @@ github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.m
github.com/opencontainers/runtime-spec v0.1.2-0.20190618234442-a950415649c7/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opencontainers/runtime-spec v1.0.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs=
github.com/openshift/api v0.0.0-20240108220607-355cd2586ec4 h1:DJbZpQkX6mzAZSrrkqKfN0UGL8KY6Noh7TJj7WyMINY=
github.com/openshift/api v0.0.0-20240108220607-355cd2586ec4/go.mod h1:CxgbWAlvu2iQB0UmKTtRu1YfepRg1/vJ64n2DlIEVz4=
github.com/openshift/api v0.0.0-20240326215622-ff84c2c73227 h1:rqvWUAipMFoiAZW4UQlEVnVxWcLfFBu3LOtSKFescSk=
github.com/openshift/api v0.0.0-20240326215622-ff84c2c73227/go.mod h1:CxgbWAlvu2iQB0UmKTtRu1YfepRg1/vJ64n2DlIEVz4=
github.com/openshift/build-machinery-go v0.0.0-20200211121458-5e3d6e570160/go.mod h1:1CkcsT3aVebzRBzVTSbiKSkJMsC/CASqxesfqEMfJEc=
github.com/openshift/client-go v0.0.0-20200116152001-92a2713fa240/go.mod h1:4riOwdj99Hd/q+iAcJZfNCsQQQMwURnZV6RL4WHYS5w=
github.com/openshift/client-go v0.0.0-20230120202327-72f107311084 h1:66uaqNwA+qYyQDwsMWUfjjau8ezmg1dzCqub13KZOcE=
Expand Down
4 changes: 2 additions & 2 deletions hack/update-generated-crd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ function install_crd {

# Can't rely on associative arrays for old Bash versions (e.g. OSX)
install_crd \
"vendor/github.com/openshift/api/operator/v1/0000_50_ingress-operator_00-ingresscontroller.crd.yaml" \
"vendor/github.com/openshift/api/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers.crd.yaml" \
"manifests/00-custom-resource-definition.yaml"

install_crd \
"vendor/github.com/openshift/api/operatoringress/v1/0000_50_dns-record.yaml" \
"vendor/github.com/openshift/api/operatoringress/v1/zz_generated.crd-manifests/0000_50_dns_01_dnsrecords.crd.yaml" \
"manifests/00-custom-resource-definition-internal.yaml"
4 changes: 2 additions & 2 deletions hack/verify-generated-crd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ function verify_crd {
}

verify_crd \
"vendor/github.com/openshift/api/operator/v1/0000_50_ingress-operator_00-ingresscontroller.crd.yaml" \
"vendor/github.com/openshift/api/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers.crd.yaml" \
"manifests/00-custom-resource-definition.yaml"

verify_crd \
"vendor/github.com/openshift/api/operatoringress/v1/0000_50_dns-record.yaml" \
"vendor/github.com/openshift/api/operatoringress/v1/zz_generated.crd-manifests/0000_50_dns_01_dnsrecords.crd.yaml" \
"manifests/00-custom-resource-definition-internal.yaml"
256 changes: 146 additions & 110 deletions manifests/00-custom-resource-definition-internal.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: dnsrecords.ingress.operator.openshift.io
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/584
api.openshift.io/merged-by-featuregates: "true"
capability.openshift.io/name: Ingress
include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
name: dnsrecords.ingress.operator.openshift.io
spec:
group: ingress.operator.openshift.io
names:
Expand All @@ -16,115 +18,149 @@ spec:
singular: dnsrecord
scope: Namespaced
versions:
- name: v1
served: true
storage: true
subresources:
status: {}
schema:
openAPIV3Schema:
description: "DNSRecord is a DNS record managed in the zones defined by dns.config.openshift.io/cluster .spec.publicZone and .spec.privateZone. \n Cluster admin manipulation of this resource is not supported. This resource is only for internal communication of OpenShift operators. \n If DNSManagementPolicy is \"Unmanaged\", the operator will not be responsible for managing the DNS records on the cloud provider. \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer)."
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 specification of the desired behavior of the dnsRecord.
type: object
required:
- dnsManagementPolicy
- dnsName
- recordTTL
- recordType
- targets
properties:
dnsManagementPolicy:
description: "dnsManagementPolicy denotes the current policy applied on the DNS record. Records that have policy set as \"Unmanaged\" are ignored by the ingress operator. This means that the DNS record on the cloud provider is not managed by the operator, and the \"Published\" status condition will be updated to \"Unknown\" status, since it is externally managed. Any existing record on the cloud provider can be deleted at the discretion of the cluster admin. \n This field defaults to Managed. Valid values are \"Managed\" and \"Unmanaged\"."
type: string
default: Managed
enum:
- Managed
- Unmanaged
dnsName:
description: dnsName is the hostname of the DNS record
type: string
minLength: 1
recordTTL:
description: recordTTL is the record TTL in seconds. If zero, the default is 30. RecordTTL will not be used in AWS regions Alias targets, but will be used in CNAME targets, per AWS API contract.
type: integer
format: int64
minimum: 0
recordType:
description: recordType is the DNS record type. For example, "A" or "CNAME".
- name: v1
schema:
openAPIV3Schema:
description: "DNSRecord is a DNS record managed in the zones defined by dns.config.openshift.io/cluster
.spec.publicZone and .spec.privateZone. \n Cluster admin manipulation of
this resource is not supported. This resource is only for internal communication
of OpenShift operators. \n If DNSManagementPolicy is \"Unmanaged\", the
operator will not be responsible for managing the DNS records on the cloud
provider. \n 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 is the specification of the desired behavior of the
dnsRecord.
properties:
dnsManagementPolicy:
default: Managed
description: "dnsManagementPolicy denotes the current policy applied
on the DNS record. Records that have policy set as \"Unmanaged\"
are ignored by the ingress operator. This means that the DNS record
on the cloud provider is not managed by the operator, and the \"Published\"
status condition will be updated to \"Unknown\" status, since it
is externally managed. Any existing record on the cloud provider
can be deleted at the discretion of the cluster admin. \n This field
defaults to Managed. Valid values are \"Managed\" and \"Unmanaged\"."
enum:
- Managed
- Unmanaged
type: string
dnsName:
description: dnsName is the hostname of the DNS record
minLength: 1
type: string
recordTTL:
description: recordTTL is the record TTL in seconds. If zero, the
default is 30. RecordTTL will not be used in AWS regions Alias targets,
but will be used in CNAME targets, per AWS API contract.
format: int64
minimum: 0
type: integer
recordType:
description: recordType is the DNS record type. For example, "A" or
"CNAME".
enum:
- CNAME
- A
type: string
targets:
description: targets are record targets.
items:
type: string
enum:
- CNAME
- A
targets:
description: targets are record targets.
type: array
minItems: 1
items:
type: string
status:
description: status is the most recently observed status of the dnsRecord.
type: object
properties:
observedGeneration:
description: observedGeneration is the most recently observed generation of the DNSRecord. When the DNSRecord is updated, the controller updates the corresponding record in each managed zone. If an update for a particular zone fails, that failure is recorded in the status condition for the zone so that the controller can determine that it needs to retry the update for that specific zone.
type: integer
format: int64
zones:
description: zones are the status of the record in each zone.
type: array
items:
description: DNSZoneStatus is the status of a record within a specific zone.
type: object
properties:
conditions:
description: "conditions are any conditions associated with the record in the zone. \n If publishing the record succeeds, the \"Published\" condition will be set with status \"True\" and upon failure it will be set to \"False\" along with the reason and message describing the cause of the failure."
type: array
items:
description: DNSZoneCondition is just the standard condition fields.
type: object
required:
- status
- type
properties:
lastTransitionTime:
type: string
format: date-time
message:
type: string
reason:
type: string
status:
type: string
minLength: 1
type:
type: string
minLength: 1
dnsZone:
description: dnsZone is the zone where the record is published.
type: object
minItems: 1
type: array
required:
- dnsManagementPolicy
- dnsName
- recordTTL
- recordType
- targets
type: object
status:
description: status is the most recently observed status of the dnsRecord.
properties:
observedGeneration:
description: observedGeneration is the most recently observed generation
of the DNSRecord. When the DNSRecord is updated, the controller
updates the corresponding record in each managed zone. If an update
for a particular zone fails, that failure is recorded in the status
condition for the zone so that the controller can determine that
it needs to retry the update for that specific zone.
format: int64
type: integer
zones:
description: zones are the status of the record in each zone.
items:
description: DNSZoneStatus is the status of a record within a specific
zone.
properties:
conditions:
description: "conditions are any conditions associated with
the record in the zone. \n If publishing the record succeeds,
the \"Published\" condition will be set with status \"True\"
and upon failure it will be set to \"False\" along with the
reason and message describing the cause of the failure."
items:
description: DNSZoneCondition is just the standard condition
fields.
properties:
id:
description: "id is the identifier that can be used to find the DNS hosted zone. \n on AWS zone can be fetched using `ID` as id in [1] on Azure zone can be fetched using `ID` as a pre-determined name in [2], on GCP zone can be fetched using `ID` as a pre-determined name in [3]. \n [1]: https://docs.aws.amazon.com/cli/latest/reference/route53/get-hosted-zone.html#options [2]: https://docs.microsoft.com/en-us/cli/azure/network/dns/zone?view=azure-cli-latest#az-network-dns-zone-show [3]: https://cloud.google.com/dns/docs/reference/v1/managedZones/get"
lastTransitionTime:
format: date-time
type: string
message:
type: string
tags:
description: "tags can be used to query the DNS hosted zone. \n on AWS, resourcegroupstaggingapi [1] can be used to fetch a zone using `Tags` as tag-filters, \n [1]: https://docs.aws.amazon.com/cli/latest/reference/resourcegroupstaggingapi/get-resources.html#options"
type: object
additionalProperties:
type: string
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
reason:
type: string
status:
minLength: 1
type: string
type:
minLength: 1
type: string
required:
- status
- type
type: object
type: array
dnsZone:
description: dnsZone is the zone where the record is published.
properties:
id:
description: "id is the identifier that can be used to find
the DNS hosted zone. \n on AWS zone can be fetched using
`ID` as id in [1] on Azure zone can be fetched using `ID`
as a pre-determined name in [2], on GCP zone can be fetched
using `ID` as a pre-determined name in [3]. \n [1]: https://docs.aws.amazon.com/cli/latest/reference/route53/get-hosted-zone.html#options
[2]: https://docs.microsoft.com/en-us/cli/azure/network/dns/zone?view=azure-cli-latest#az-network-dns-zone-show
[3]: https://cloud.google.com/dns/docs/reference/v1/managedZones/get"
type: string
tags:
additionalProperties:
type: string
description: "tags can be used to query the DNS hosted zone.
\n on AWS, resourcegroupstaggingapi [1] can be used to
fetch a zone using `Tags` as tag-filters, \n [1]: https://docs.aws.amazon.com/cli/latest/reference/resourcegroupstaggingapi/get-resources.html#options"
type: object
type: object
type: object
type: array
type: object
type: object
served: true
storage: true
subresources:
status: {}
Loading