-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support for amphora provider services
Adds support for launching the amphora controller services. Implementation is informed by the fact that the amphora provider specific services share many common configurations and deployment requirements. Note: full deployment support isn't available with this change and would require several manual steps to enable.
- Loading branch information
Showing
35 changed files
with
2,848 additions
and
27 deletions.
There are no files selected for viewing
257 changes: 257 additions & 0 deletions
257
api/bases/octavia.openstack.org_octaviaamphoracontrollers.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,257 @@ | ||
--- | ||
apiVersion: apiextensions.k8s.io/v1 | ||
kind: CustomResourceDefinition | ||
metadata: | ||
annotations: | ||
controller-gen.kubebuilder.io/version: v0.10.0 | ||
creationTimestamp: null | ||
name: octaviaamphoracontrollers.octavia.openstack.org | ||
spec: | ||
group: octavia.openstack.org | ||
names: | ||
kind: OctaviaAmphoraController | ||
listKind: OctaviaAmphoraControllerList | ||
plural: octaviaamphoracontrollers | ||
singular: octaviaamphoracontroller | ||
scope: Namespaced | ||
versions: | ||
- additionalPrinterColumns: | ||
- description: Status | ||
jsonPath: .status.conditions[0].status | ||
name: Status | ||
type: string | ||
- description: Message | ||
jsonPath: .status.conditions[0].message | ||
name: Message | ||
type: string | ||
name: v1beta1 | ||
schema: | ||
openAPIV3Schema: | ||
description: OctaviaAmphoraController is the Schema for the octaviaworkers | ||
API | ||
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: OctaviaAmphoraControllerSpec defines common state for all | ||
Octavia Amphora Controllers | ||
properties: | ||
certssecret: | ||
description: '*kubebuilder:validation:Required Secret containing certs | ||
for securing communication with amphora based Load Balancers' | ||
type: string | ||
containerImage: | ||
description: ContainerImage - Amphora Controller Container Image URL | ||
type: string | ||
customServiceConfig: | ||
default: '# add your customization here' | ||
description: CustomServiceConfig - customize the service config using | ||
this parameter to change service defaults, or overwrite rendered | ||
information using raw OpenStack config format. The content gets | ||
added to to /etc/<service>/<service>.conf.d directory as custom.conf | ||
file. | ||
type: string | ||
databaseHostname: | ||
description: DatabaseHostname - Octavia DB hostname | ||
type: string | ||
databaseInstance: | ||
description: MariaDB instance name Right now required by the maridb-operator | ||
to get the credentials from the instance to create the DB Might | ||
not be required in future | ||
type: string | ||
databaseUser: | ||
default: octavia | ||
description: 'DatabaseUser - optional username used for octavia DB, | ||
defaults to octavia TODO: -> implement needs work in mariadb-operator, | ||
right now only octavia' | ||
type: string | ||
defaultConfigOverwrite: | ||
additionalProperties: | ||
type: string | ||
description: 'ConfigOverwrite - interface to overwrite default config | ||
files like e.g. logging.conf or policy.json. But can also be used | ||
to add additional files. Those get added to the service config dir | ||
in /etc/<service> . TODO: -> implement' | ||
type: object | ||
nodeSelector: | ||
additionalProperties: | ||
type: string | ||
description: NodeSelector to target subset of worker nodes running | ||
this service | ||
type: object | ||
passwordSelectors: | ||
default: | ||
database: OctaviaDatabasePassword | ||
service: OctaviaPassword | ||
description: PasswordSelectors - Selectors to identify the DB and | ||
AdminUser password from the Secret | ||
properties: | ||
database: | ||
default: OctaviaDatabasePassword | ||
description: 'Database - Selector to get the octavia Database | ||
user password from the Secret TODO: not used, need change in | ||
mariadb-operator' | ||
type: string | ||
service: | ||
default: OctaviaPassword | ||
description: Service - Selector to get the service user password | ||
from the Secret | ||
type: string | ||
type: object | ||
replicas: | ||
default: 1 | ||
description: Replicas - Octavia Worker Replicas | ||
format: int32 | ||
maximum: 32 | ||
minimum: 0 | ||
type: integer | ||
resources: | ||
description: Resources - Compute Resources required by this service | ||
(Limits/Requests). https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ | ||
properties: | ||
claims: | ||
description: "Claims lists the names of resources, defined in | ||
spec.resourceClaims, that are used by this container. \n This | ||
is an alpha field and requires enabling the DynamicResourceAllocation | ||
feature gate. \n This field is immutable. It can only be set | ||
for containers." | ||
items: | ||
description: ResourceClaim references one entry in PodSpec.ResourceClaims. | ||
properties: | ||
name: | ||
description: Name must match the name of one entry in pod.spec.resourceClaims | ||
of the Pod where this field is used. It makes that resource | ||
available inside a container. | ||
type: string | ||
required: | ||
- name | ||
type: object | ||
type: array | ||
x-kubernetes-list-map-keys: | ||
- name | ||
x-kubernetes-list-type: map | ||
limits: | ||
additionalProperties: | ||
anyOf: | ||
- type: integer | ||
- type: string | ||
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||
x-kubernetes-int-or-string: true | ||
description: 'Limits describes the maximum amount of compute resources | ||
allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' | ||
type: object | ||
requests: | ||
additionalProperties: | ||
anyOf: | ||
- type: integer | ||
- type: string | ||
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ | ||
x-kubernetes-int-or-string: true | ||
description: 'Requests describes the minimum amount of compute | ||
resources required. If Requests is omitted for a container, | ||
it defaults to Limits if that is explicitly specified, otherwise | ||
to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' | ||
type: object | ||
type: object | ||
role: | ||
description: Role - the role for the controller (one of worker, housekeeping, | ||
healthmanager) | ||
type: string | ||
secret: | ||
description: Secret containing OpenStack password information for | ||
octavia OctaviaDatabasePassword, AdminPassword | ||
type: string | ||
serviceAccount: | ||
description: ServiceAccount - service account name used internally | ||
to provide Octavia services the default SA name | ||
type: string | ||
serviceUser: | ||
default: octavia | ||
description: 'ServiceUser - service user name (TODO: beagles, do we | ||
need this at all)' | ||
type: string | ||
transportURLSecret: | ||
description: TransportURLSecret - Secret containing RabbitMQ transportURL | ||
type: string | ||
required: | ||
- certssecret | ||
- databaseInstance | ||
- role | ||
- secret | ||
- serviceAccount | ||
type: object | ||
status: | ||
description: OctaviaAmphoraControllerStatus defines the observed state | ||
of the Octavia Amphora Controller | ||
properties: | ||
conditions: | ||
description: Conditions | ||
items: | ||
description: Condition defines an observation of a API resource | ||
operational state. | ||
properties: | ||
lastTransitionTime: | ||
description: 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: A human readable message indicating details about | ||
the transition. | ||
type: string | ||
reason: | ||
description: The reason for the condition's last transition | ||
in CamelCase. | ||
type: string | ||
severity: | ||
description: Severity provides a classification of Reason code, | ||
so the current situation is immediately understandable and | ||
could act accordingly. It is meant for situations where Status=False | ||
and it should be indicated if it is just informational, warning | ||
(next reconciliation might fix it) or an error (e.g. DB create | ||
issue and no actions to automatically resolve the issue can/should | ||
be done). For conditions where Status=Unknown or Status=True | ||
the Severity should be SeverityNone. | ||
type: string | ||
status: | ||
description: Status of the condition, one of True, False, Unknown. | ||
type: string | ||
type: | ||
description: Type of condition in CamelCase. | ||
type: string | ||
required: | ||
- lastTransitionTime | ||
- status | ||
- type | ||
type: object | ||
type: array | ||
databaseHostname: | ||
description: Octavia Database Hostname | ||
type: string | ||
hash: | ||
additionalProperties: | ||
type: string | ||
description: Map of hashes to track e.g. job status | ||
type: object | ||
readyCount: | ||
description: ReadyCount of Octavia Amphora Controllers | ||
format: int32 | ||
type: integer | ||
type: object | ||
type: object | ||
served: true | ||
storage: true | ||
subresources: | ||
status: {} |
Oops, something went wrong.