Mixed protocol support for Services with type=LoadBalancer (#94028)

* Mixed protocol support for Services with type=LoadBalancer

KEP: https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/20200103-mixed-protocol-lb.md
Add new feature gate to control the support of mixed protocols in Services with type=LoadBalancer
Add new fields to the ServiceStatus
  Add Ports to the LoadBalancerIngress, so cloud provider implementations can report the status of the requested load balanc
er ports
  Add ServiceCondition to the ServiceStatus so Service controllers can indicate the conditions of the Service

* regenerate conflicting stuff
This commit is contained in:
Laszlo Janosi
2020-11-13 22:21:04 +01:00
committed by GitHub
parent 0081e0ebf5
commit c970a46bc1
30 changed files with 2219 additions and 970 deletions

View File

@@ -7337,6 +7337,14 @@
"ip": {
"description": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)",
"type": "string"
},
"ports": {
"description": "Ports is a list of records of service ports If used, every port defined in the service should have an entry in it",
"items": {
"$ref": "#/definitions/io.k8s.api.core.v1.PortStatus"
},
"type": "array",
"x-kubernetes-list-type": "atomic"
}
},
"type": "object"
@@ -9081,6 +9089,28 @@
},
"type": "object"
},
"io.k8s.api.core.v1.PortStatus": {
"properties": {
"error": {
"description": "Error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use\n CamelCase names\n- cloud provider specific error values must have names that comply with the\n format foo.example.com/CamelCase.",
"type": "string"
},
"port": {
"description": "Port is the port number of the service port of which status is recorded here",
"format": "int32",
"type": "integer"
},
"protocol": {
"description": "Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\"",
"type": "string"
}
},
"required": [
"port",
"protocol"
],
"type": "object"
},
"io.k8s.api.core.v1.PortworxVolumeSource": {
"description": "PortworxVolumeSource represents a Portworx volume resource.",
"properties": {
@@ -10362,6 +10392,19 @@
"io.k8s.api.core.v1.ServiceStatus": {
"description": "ServiceStatus represents the current status of a service.",
"properties": {
"conditions": {
"description": "Current service state",
"items": {
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition"
},
"type": "array",
"x-kubernetes-list-map-keys": [
"type"
],
"x-kubernetes-list-type": "map",
"x-kubernetes-patch-merge-key": "type",
"x-kubernetes-patch-strategy": "merge"
},
"loadBalancer": {
"$ref": "#/definitions/io.k8s.api.core.v1.LoadBalancerStatus",
"description": "LoadBalancer contains the current status of the load-balancer, if one is present."
@@ -17749,6 +17792,44 @@
}
]
},
"io.k8s.apimachinery.pkg.apis.meta.v1.Condition": {
"description": "Condition contains details for one aspect of the current state of this API Resource.",
"properties": {
"lastTransitionTime": {
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time",
"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."
},
"message": {
"description": "message is a human readable message indicating details about the transition. This may be an empty string.",
"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",
"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.",
"type": "string"
},
"status": {
"description": "status of the condition, one of True, False, Unknown.",
"type": "string"
},
"type": {
"description": "type of condition in CamelCase or in foo.example.com/CamelCase.",
"type": "string"
}
},
"required": [
"type",
"status",
"lastTransitionTime",
"reason",
"message"
],
"type": "object"
},
"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions": {
"description": "DeleteOptions may be provided when deleting an API object.",
"properties": {