Skip to content

Commit

Permalink
Update autoscaling to use service override
Browse files Browse the repository at this point in the history
  • Loading branch information
vyzigold committed Oct 3, 2023
1 parent 5caca0c commit 3fca2d8
Show file tree
Hide file tree
Showing 11 changed files with 870 additions and 21 deletions.
175 changes: 175 additions & 0 deletions api/bases/telemetry.openstack.org_autoscalings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,176 @@ spec:
type: array
notifierImage:
type: string
override:
description: Override, provides the ability to override the generated
manifest of several child resources.
properties:
service:
description: Override configuration for the Service created
to serve traffic to the cluster.
properties:
endpointURL:
type: string
metadata:
description: EmbeddedLabelsAnnotations is an embedded
subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.
Only labels and annotations are included.
properties:
annotations:
additionalProperties:
type: string
description: 'Annotations is an unstructured key value
map stored with a resource that may be set by external
tools to store and retrieve arbitrary metadata.
They are not queryable and should be preserved when
modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
type: object
labels:
additionalProperties:
type: string
description: 'Map of string keys and values that can
be used to organize and categorize (scope and select)
objects. May match selectors of replication controllers
and services. More info: http://kubernetes.io/docs/user-guide/labels'
type: object
type: object
spec:
description: OverrideServiceSpec is a subset of the fields
included in https://pkg.go.dev/k8s.io/[email protected]/core/v1#ServiceSpec
Limited to Type, SessionAffinity, LoadBalancerSourceRanges,
ExternalName, ExternalTrafficPolicy, SessionAffinityConfig,
IPFamilyPolicy, LoadBalancerClass and InternalTrafficPolicy
properties:
externalName:
description: externalName is the external reference
that discovery mechanisms will return as an alias
for this service (e.g. a DNS CNAME record). No proxying
will be involved. Must be a lowercase RFC-1123
hostname (https://tools.ietf.org/html/rfc1123) and
requires `type` to be "ExternalName".
type: string
externalTrafficPolicy:
description: externalTrafficPolicy describes how nodes
distribute service traffic they receive on one of
the Service's "externally-facing" addresses (NodePorts,
ExternalIPs, and LoadBalancer IPs). If set to "Local",
the proxy will configure the service in a way that
assumes that external load balancers will take care
of balancing the service traffic between nodes,
and so each node will deliver traffic only to the
node-local endpoints of the service, without masquerading
the client source IP. (Traffic mistakenly sent to
a node with no endpoints will be dropped.) The default
value, "Cluster", uses the standard behavior of
routing to all endpoints evenly (possibly modified
by topology and other features). Note that traffic
sent to an External IP or LoadBalancer IP from within
the cluster will always get "Cluster" semantics,
but clients sending to a NodePort from within the
cluster may need to take traffic policy into account
when picking a node.
type: string
internalTrafficPolicy:
description: InternalTrafficPolicy describes how nodes
distribute service traffic they receive on the ClusterIP.
If set to "Local", the proxy will assume that pods
only want to talk to endpoints of the service on
the same node as the pod, dropping the traffic if
there are no local endpoints. The default value,
"Cluster", uses the standard behavior of routing
to all endpoints evenly (possibly modified by topology
and other features).
type: string
ipFamilyPolicy:
description: IPFamilyPolicy represents the dual-stack-ness
requested or required by this Service. If there
is no value provided, then this field will be set
to SingleStack. Services can be "SingleStack" (a
single IP family), "PreferDualStack" (two IP families
on dual-stack configured clusters or a single IP
family on single-stack clusters), or "RequireDualStack"
(two IP families on dual-stack configured clusters,
otherwise fail). The ipFamilies and clusterIPs fields
depend on the value of this field. This field will
be wiped when updating a service to type ExternalName.
type: string
loadBalancerClass:
description: loadBalancerClass is the class of the
load balancer implementation this Service belongs
to. If specified, the value of this field must be
a label-style identifier, with an optional prefix,
e.g. "internal-vip" or "example.com/internal-vip".
Unprefixed names are reserved for end-users. This
field can only be set when the Service type is 'LoadBalancer'.
If not set, the default load balancer implementation
is used, today this is typically done through the
cloud provider integration, but should apply for
any default implementation. If set, it is assumed
that a load balancer implementation is watching
for Services with a matching class. Any default
load balancer implementation (e.g. cloud providers)
should ignore Services that set this field. This
field can only be set when creating or updating
a Service to type 'LoadBalancer'. Once set, it can
not be changed. This field will be wiped when a
service is updated to a non 'LoadBalancer' type.
type: string
loadBalancerSourceRanges:
description: 'If specified and supported by the platform,
this will restrict traffic through the cloud-provider
load-balancer will be restricted to the specified
client IPs. This field will be ignored if the cloud-provider
does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/'
items:
type: string
type: array
sessionAffinity:
description: 'Supports "ClientIP" and "None". Used
to maintain session affinity. Enable client IP based
session affinity. Must be ClientIP or None. Defaults
to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
type: string
sessionAffinityConfig:
description: sessionAffinityConfig contains the configurations
of session affinity.
properties:
clientIP:
description: clientIP contains the configurations
of Client IP based session affinity.
properties:
timeoutSeconds:
description: timeoutSeconds specifies the
seconds of ClientIP type session sticky
time. The value must be >0 && <=86400(for
1 day) if ServiceAffinity == "ClientIP".
Default value is 10800(for 3 hours).
format: int32
type: integer
type: object
type: object
type:
description: 'type determines how the Service is exposed.
Defaults to ClusterIP. Valid options are ExternalName,
ClusterIP, NodePort, and LoadBalancer. "ClusterIP"
allocates a cluster-internal IP address for load-balancing
to endpoints. Endpoints are determined by the selector
or if that is not specified, by manual construction
of an Endpoints object or EndpointSlice objects.
If clusterIP is "None", no virtual IP is allocated
and the endpoints are published as a set of endpoints
rather than a virtual IP. "NodePort" builds on ClusterIP
and allocates a port on every node which routes
to the same endpoints as the clusterIP. "LoadBalancer"
builds on NodePort and creates an external load-balancer
(if supported in the current cloud) which routes
to the same endpoints as the clusterIP. "ExternalName"
aliases this service to the specified externalName.
Several other fields do not apply to ExternalName
services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types'
type: string
type: object
type: object
type: object
passwordSelector:
default:
aodhService: AodhPassword
Expand Down Expand Up @@ -166,6 +336,11 @@ spec:
status:
description: AutoscalingStatus defines the observed state of Autoscaling
properties:
apiEndpoint:
additionalProperties:
type: string
description: API endpoint
type: object
conditions:
description: Conditions
items:
Expand Down
Loading

0 comments on commit 3fca2d8

Please sign in to comment.