mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-02-22 16:00:05 -05:00
cli: add yawol helm charts
This commit is contained in:
parent
ab74958b4a
commit
0ebe6e669d
@ -0,0 +1,23 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: yawol-config
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.0
|
@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: yawolkey
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
data:
|
||||||
|
cloudprovider.conf: {{ .Values.secretData | b64enc }}
|
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
||||||
|
"properties": {
|
||||||
|
"secretData": {
|
||||||
|
"description": "Cloud INI secret used for yawol.",
|
||||||
|
"type": "string",
|
||||||
|
"examples": [
|
||||||
|
"[Global]\nauth-url = ..."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"secretData"
|
||||||
|
],
|
||||||
|
"title": "Values",
|
||||||
|
"type": "object"
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
description: Helm chart for yawol-controller
|
||||||
|
name: yawol-controller
|
||||||
|
sources:
|
||||||
|
- https://github.com/stackitcloud/yawol
|
||||||
|
version: 0.14.0
|
||||||
|
appVersion: v0.14.0
|
@ -0,0 +1,55 @@
|
|||||||
|
# yawol-controller
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
Helm chart for yawol-controller
|
||||||
|
|
||||||
|
## Source Code
|
||||||
|
|
||||||
|
* <https://github.com/stackitcloud/yawol>
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Key | Type | Default | Description |
|
||||||
|
|-----|------|---------|-------------|
|
||||||
|
| featureGates | object | `{}` | |
|
||||||
|
| namespace | string | `"kube-system"` | |
|
||||||
|
| podAnnotations | object | `{}` | |
|
||||||
|
| podLabels | object | `{}` | |
|
||||||
|
| proxy | object | `{}` | |
|
||||||
|
| replicas | int | `1` | |
|
||||||
|
| resources.yawolCloudController.limits.cpu | string | `"500m"` | |
|
||||||
|
| resources.yawolCloudController.limits.memory | string | `"512Mi"` | |
|
||||||
|
| resources.yawolCloudController.requests.cpu | string | `"100m"` | |
|
||||||
|
| resources.yawolCloudController.requests.memory | string | `"64Mi"` | |
|
||||||
|
| resources.yawolControllerLoadbalancer.limits.cpu | string | `"500m"` | |
|
||||||
|
| resources.yawolControllerLoadbalancer.limits.memory | string | `"512Mi"` | |
|
||||||
|
| resources.yawolControllerLoadbalancer.requests.cpu | string | `"100m"` | |
|
||||||
|
| resources.yawolControllerLoadbalancer.requests.memory | string | `"64Mi"` | |
|
||||||
|
| resources.yawolControllerLoadbalancermachine.limits.cpu | string | `"500m"` | |
|
||||||
|
| resources.yawolControllerLoadbalancermachine.limits.memory | string | `"512Mi"` | |
|
||||||
|
| resources.yawolControllerLoadbalancermachine.requests.cpu | string | `"100m"` | |
|
||||||
|
| resources.yawolControllerLoadbalancermachine.requests.memory | string | `"64Mi"` | |
|
||||||
|
| resources.yawolControllerLoadbalancerset.limits.cpu | string | `"500m"` | |
|
||||||
|
| resources.yawolControllerLoadbalancerset.limits.memory | string | `"512Mi"` | |
|
||||||
|
| resources.yawolControllerLoadbalancerset.requests.cpu | string | `"100m"` | |
|
||||||
|
| resources.yawolControllerLoadbalancerset.requests.memory | string | `"64Mi"` | |
|
||||||
|
| vpa.enabled | bool | `false` | |
|
||||||
|
| vpa.yawolCloudController.mode | string | `"Auto"` | |
|
||||||
|
| vpa.yawolController.mode | string | `"Auto"` | |
|
||||||
|
| yawolAPIHost | string | `nil` | |
|
||||||
|
| yawolAvailabilityZone | string | `""` | |
|
||||||
|
| yawolCloudController.clusterRoleEnabled | bool | `true` | |
|
||||||
|
| yawolCloudController.enabled | bool | `true` | |
|
||||||
|
| yawolCloudController.gardenerMonitoringEnabled | bool | `false` | |
|
||||||
|
| yawolCloudController.image.repository | string | `"ghcr.io/stackitcloud/yawol/yawol-cloud-controller"` | |
|
||||||
|
| yawolCloudController.image.tag | string | `""` | Allows you to override the yawol version in this chart. Use at your own risk. |
|
||||||
|
| yawolController.gardenerMonitoringEnabled | bool | `false` | |
|
||||||
|
| yawolController.image.repository | string | `"ghcr.io/stackitcloud/yawol/yawol-controller"` | |
|
||||||
|
| yawolController.image.tag | string | `""` | Allows you to override the yawol version in this chart. Use at your own risk. |
|
||||||
|
| yawolFlavorID | string | `nil` | |
|
||||||
|
| yawolFloatingID | string | `nil` | |
|
||||||
|
| yawolImageID | string | `nil` | |
|
||||||
|
| yawolNetworkID | string | `nil` | |
|
||||||
|
| yawolOSSecretName | string | `nil` | |
|
||||||
|
|
@ -0,0 +1,319 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.11.3
|
||||||
|
creationTimestamp: null
|
||||||
|
name: loadbalancermachines.yawol.stackit.cloud
|
||||||
|
spec:
|
||||||
|
group: yawol.stackit.cloud
|
||||||
|
names:
|
||||||
|
kind: LoadBalancerMachine
|
||||||
|
listKind: LoadBalancerMachineList
|
||||||
|
plural: loadbalancermachines
|
||||||
|
shortNames:
|
||||||
|
- lbm
|
||||||
|
singular: loadbalancermachine
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=="EnvoyUpToDate")].status
|
||||||
|
name: EnvoyUpToDate
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.conditions[?(@.type=="KeepalivedMaster")].status
|
||||||
|
name: KeepalivedMaster
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.metrics[?(@.type=="load1")].value
|
||||||
|
name: Load1
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.creationTimestamp
|
||||||
|
name: creationTimestamp
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: LoadBalancerMachine is the Schema for the LoadBalancerMachine's
|
||||||
|
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: LoadBalancerMachineSpec defines the desired state of LoadBalancerMachine
|
||||||
|
properties:
|
||||||
|
infrastructure:
|
||||||
|
description: Infrastructure defines parameters for the Infrastructure.
|
||||||
|
properties:
|
||||||
|
additionalNetworks:
|
||||||
|
description: AdditionalNetworks defines additional networks that
|
||||||
|
will be added to the LoadBalancerMachines.
|
||||||
|
items:
|
||||||
|
description: LoadBalancerAdditionalNetwork defines additional
|
||||||
|
networks for the LoadBalancer
|
||||||
|
properties:
|
||||||
|
networkID:
|
||||||
|
description: NetworkID defines an openstack ID for the network.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- networkID
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
authSecretRef:
|
||||||
|
description: AuthSecretRef defines a secretRef for the openstack
|
||||||
|
secret.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: name is unique within a namespace to reference
|
||||||
|
a secret resource.
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: namespace defines the space within which the
|
||||||
|
secret name must be unique.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
availabilityZone:
|
||||||
|
description: AvailabilityZone defines the openstack availability
|
||||||
|
zone for the LoadBalancer.
|
||||||
|
type: string
|
||||||
|
defaultNetwork:
|
||||||
|
description: DefaultNetwork defines the default/listener network
|
||||||
|
for the Loadbalancer. TODO Remove optional when Deprecations
|
||||||
|
are removed
|
||||||
|
properties:
|
||||||
|
floatingNetID:
|
||||||
|
description: FloatingNetID defines an openstack ID for the
|
||||||
|
floatingNet.
|
||||||
|
type: string
|
||||||
|
networkID:
|
||||||
|
description: NetworkID defines an openstack ID for the network.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- networkID
|
||||||
|
type: object
|
||||||
|
flavor:
|
||||||
|
description: Flavor defines openstack flavor for the LoadBalancer.
|
||||||
|
properties:
|
||||||
|
flavor_id:
|
||||||
|
description: 'Deprecated: use flavorID instead.'
|
||||||
|
type: string
|
||||||
|
flavor_name:
|
||||||
|
description: 'Deprecated: use flavorName instead.'
|
||||||
|
type: string
|
||||||
|
flavor_search:
|
||||||
|
description: 'Deprecated: use flavorSearch instead.'
|
||||||
|
type: string
|
||||||
|
flavorID:
|
||||||
|
description: FlavorID is the flavor ID used for requesting
|
||||||
|
virtual machines.
|
||||||
|
type: string
|
||||||
|
flavorName:
|
||||||
|
description: NOT IMPLEMENTED ONLY FlavorID is supported. FlavorName
|
||||||
|
is the name of the flavor used for requesting virtual machines.
|
||||||
|
FlavorName is only used if FlavorID is not defined.
|
||||||
|
type: string
|
||||||
|
flavorSearch:
|
||||||
|
description: NOT IMPLEMENTED ONLY FlavorID is supported. FlavorSearch
|
||||||
|
is a search string to find the flavor used for requesting
|
||||||
|
virtual machines. Search will be performed in metadata of
|
||||||
|
the flavors. FlavorSearch is only used if FlavorName and
|
||||||
|
FlavorID are not defined.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
floatingNetID:
|
||||||
|
description: 'Deprecated: use defaultNetwork instead FloatingNetID
|
||||||
|
defines a openstack ID for the floatingNet.'
|
||||||
|
type: string
|
||||||
|
image:
|
||||||
|
description: Image defines openstack image for the LoadBalancer.
|
||||||
|
properties:
|
||||||
|
image_id:
|
||||||
|
description: 'Deprecated: use imageID instead.'
|
||||||
|
type: string
|
||||||
|
image_name:
|
||||||
|
description: 'Deprecated: use imageName instead.'
|
||||||
|
type: string
|
||||||
|
image_search:
|
||||||
|
description: 'Deprecated: use imageSearch instead.'
|
||||||
|
type: string
|
||||||
|
imageID:
|
||||||
|
description: ImageID is the image ID used for requesting virtual
|
||||||
|
machines.
|
||||||
|
type: string
|
||||||
|
imageName:
|
||||||
|
description: NOT IMPLEMENTED ONLY ImageID is supported. ImageName
|
||||||
|
is the name of the image used for requesting virtual machines.
|
||||||
|
ImageName is only used if ImageID is not defined.
|
||||||
|
type: string
|
||||||
|
imageSearch:
|
||||||
|
description: NOT IMPLEMENTED ONLY ImageID is supported. ImageSearch
|
||||||
|
is a search string to find the image used for requesting
|
||||||
|
virtual machines. Search will be performed in metadata of
|
||||||
|
the images. ImageSearch is only used if ImageName and ImageID
|
||||||
|
are not defined.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
networkID:
|
||||||
|
description: 'Deprecated: use defaultNetwork instead NetworkID
|
||||||
|
defines a openstack ID for the network.'
|
||||||
|
type: string
|
||||||
|
projectID:
|
||||||
|
description: ProjectID defines an openstack project ID which will
|
||||||
|
be used instead of the project from the secret ref. If not set
|
||||||
|
the project from the secret ref will be used.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- authSecretRef
|
||||||
|
- flavor
|
||||||
|
- image
|
||||||
|
type: object
|
||||||
|
loadBalancerRef:
|
||||||
|
description: LoadBalancerRef defines a reference to the LoadBalancer
|
||||||
|
Object.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name is unique within a namespace to reference a
|
||||||
|
LoadBalancer resource.
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: Namespace defines the space within which the LoadBalancer
|
||||||
|
name must be unique.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- namespace
|
||||||
|
type: object
|
||||||
|
portID:
|
||||||
|
description: PortID defines the openstack ID of the port attached
|
||||||
|
to the FloatingIP.
|
||||||
|
type: string
|
||||||
|
serverGroupID:
|
||||||
|
description: ServerGroupID defines the openstack ID of the openstack
|
||||||
|
server group.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- infrastructure
|
||||||
|
- loadBalancerRef
|
||||||
|
- portID
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: LoadBalancerMachineStatus defines the observed state of LoadBalancerMachine.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions contains condition information for a LoadBalancerMachine.
|
||||||
|
items:
|
||||||
|
description: NodeCondition contains condition information for a
|
||||||
|
node.
|
||||||
|
properties:
|
||||||
|
lastHeartbeatTime:
|
||||||
|
description: Last time we got an update on a given condition.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
lastTransitionTime:
|
||||||
|
description: Last time the condition transit from one status
|
||||||
|
to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: Human readable message indicating details about
|
||||||
|
last transition.
|
||||||
|
type: string
|
||||||
|
reason:
|
||||||
|
description: (brief) reason for the condition's last transition.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of the condition, one of True, False, Unknown.
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: Type of node condition.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
creationTimestamp:
|
||||||
|
description: CreationTimestamp contains the creation timestamp a LoadBalancerMachine.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
defaultPortID:
|
||||||
|
description: DefaultPortID contains the default openstack port ID
|
||||||
|
for a LoadBalancerMachine.
|
||||||
|
type: string
|
||||||
|
defaultPortIP:
|
||||||
|
description: DefaultPortIP contains the default openstack port IP
|
||||||
|
for a LoadBalancerMachine.
|
||||||
|
type: string
|
||||||
|
defaultPortName:
|
||||||
|
description: DefaultPortName contains the default openstack port Name
|
||||||
|
for a LoadBalancerMachine.
|
||||||
|
type: string
|
||||||
|
lastOpenstackReconcile:
|
||||||
|
description: LastOpenstackReconcile contains the timestamp of the
|
||||||
|
last openstack reconciliation.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
metrics:
|
||||||
|
description: Metrics contains metrics for a LoadBalancerMachine.
|
||||||
|
items:
|
||||||
|
description: LoadBalancerMachineMetric describes a metric of the
|
||||||
|
LoadBalancerMachine
|
||||||
|
properties:
|
||||||
|
timestamp:
|
||||||
|
description: Time is the timestamp if the metric
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: Type is the type of the metric
|
||||||
|
type: string
|
||||||
|
value:
|
||||||
|
description: Value is the value of a metric
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- timestamp
|
||||||
|
- type
|
||||||
|
- value
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
portID:
|
||||||
|
description: 'Deprecated: use defaultPortID instead PortID contains
|
||||||
|
the openstack port ID for a LoadBalancerMachine.'
|
||||||
|
type: string
|
||||||
|
roleBindingName:
|
||||||
|
description: RoleBindingName contains the namespacedName from the
|
||||||
|
RoleBinding for a LoadBalancerMachine.
|
||||||
|
type: string
|
||||||
|
roleName:
|
||||||
|
description: RoleName contains the namespacedName from the Role for
|
||||||
|
a LoadBalancerMachine.
|
||||||
|
type: string
|
||||||
|
serverID:
|
||||||
|
description: ServerID contains the openstack server ID for a LoadBalancerMachine.
|
||||||
|
type: string
|
||||||
|
serviceAccountName:
|
||||||
|
description: ServiceAccountName contains the namespacedName from the
|
||||||
|
ServiceAccount for a LoadBalancerMachine.
|
||||||
|
type: string
|
||||||
|
serviceAccountSecretName:
|
||||||
|
description: SecretName contains the namespacedName from the Secret
|
||||||
|
which belongs to the Serviceaccount.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
@ -0,0 +1,454 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.11.3
|
||||||
|
creationTimestamp: null
|
||||||
|
name: loadbalancers.yawol.stackit.cloud
|
||||||
|
spec:
|
||||||
|
group: yawol.stackit.cloud
|
||||||
|
names:
|
||||||
|
kind: LoadBalancer
|
||||||
|
listKind: LoadBalancerList
|
||||||
|
plural: loadbalancers
|
||||||
|
shortNames:
|
||||||
|
- lb
|
||||||
|
singular: loadbalancer
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.replicas
|
||||||
|
name: DESIRED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.replicas
|
||||||
|
name: CURRENT
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.readyReplicas
|
||||||
|
name: READY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.externalIP
|
||||||
|
name: externalIP
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: LoadBalancer is the Schema for the YAWOL LoadBalancer 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: LoadBalancerSpec defines the desired state of LoadBalancer
|
||||||
|
properties:
|
||||||
|
debugSettings:
|
||||||
|
description: Debug are settings for debugging an loadbalancer.
|
||||||
|
properties:
|
||||||
|
enabled:
|
||||||
|
description: Enabled defines if debugging is enabled
|
||||||
|
type: boolean
|
||||||
|
sshkeyName:
|
||||||
|
description: SshKey is a openstack sshkey name for debugging
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
endpoints:
|
||||||
|
description: Endpoints defines the Endpoints for the LoadBalancer.
|
||||||
|
items:
|
||||||
|
description: LoadBalancerEndpoint defines a Endpoint for the LoadBalancer
|
||||||
|
properties:
|
||||||
|
addresses:
|
||||||
|
description: Addresses is a list of addresses for the endpoint,
|
||||||
|
they can contain IPv4 and IPv6 addresses.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
name:
|
||||||
|
description: 'Name defines a name for the Endpoint (example:
|
||||||
|
node name).'
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
existingFloatingIP:
|
||||||
|
description: ExistingFloatingIP uses a existing Floating IP as FIP
|
||||||
|
type: string
|
||||||
|
infrastructure:
|
||||||
|
description: Infrastructure defines parameters for the Infrastructure
|
||||||
|
properties:
|
||||||
|
additionalNetworks:
|
||||||
|
description: AdditionalNetworks defines additional networks that
|
||||||
|
will be added to the LoadBalancerMachines.
|
||||||
|
items:
|
||||||
|
description: LoadBalancerAdditionalNetwork defines additional
|
||||||
|
networks for the LoadBalancer
|
||||||
|
properties:
|
||||||
|
networkID:
|
||||||
|
description: NetworkID defines an openstack ID for the network.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- networkID
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
authSecretRef:
|
||||||
|
description: AuthSecretRef defines a secretRef for the openstack
|
||||||
|
secret.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: name is unique within a namespace to reference
|
||||||
|
a secret resource.
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: namespace defines the space within which the
|
||||||
|
secret name must be unique.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
availabilityZone:
|
||||||
|
description: AvailabilityZone defines the openstack availability
|
||||||
|
zone for the LoadBalancer.
|
||||||
|
type: string
|
||||||
|
defaultNetwork:
|
||||||
|
description: DefaultNetwork defines the default/listener network
|
||||||
|
for the Loadbalancer. TODO Remove optional when Deprecations
|
||||||
|
are removed
|
||||||
|
properties:
|
||||||
|
floatingNetID:
|
||||||
|
description: FloatingNetID defines an openstack ID for the
|
||||||
|
floatingNet.
|
||||||
|
type: string
|
||||||
|
networkID:
|
||||||
|
description: NetworkID defines an openstack ID for the network.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- networkID
|
||||||
|
type: object
|
||||||
|
flavor:
|
||||||
|
description: Flavor defines openstack flavor for the LoadBalancer.
|
||||||
|
properties:
|
||||||
|
flavor_id:
|
||||||
|
description: 'Deprecated: use flavorID instead.'
|
||||||
|
type: string
|
||||||
|
flavor_name:
|
||||||
|
description: 'Deprecated: use flavorName instead.'
|
||||||
|
type: string
|
||||||
|
flavor_search:
|
||||||
|
description: 'Deprecated: use flavorSearch instead.'
|
||||||
|
type: string
|
||||||
|
flavorID:
|
||||||
|
description: FlavorID is the flavor ID used for requesting
|
||||||
|
virtual machines.
|
||||||
|
type: string
|
||||||
|
flavorName:
|
||||||
|
description: NOT IMPLEMENTED ONLY FlavorID is supported. FlavorName
|
||||||
|
is the name of the flavor used for requesting virtual machines.
|
||||||
|
FlavorName is only used if FlavorID is not defined.
|
||||||
|
type: string
|
||||||
|
flavorSearch:
|
||||||
|
description: NOT IMPLEMENTED ONLY FlavorID is supported. FlavorSearch
|
||||||
|
is a search string to find the flavor used for requesting
|
||||||
|
virtual machines. Search will be performed in metadata of
|
||||||
|
the flavors. FlavorSearch is only used if FlavorName and
|
||||||
|
FlavorID are not defined.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
floatingNetID:
|
||||||
|
description: 'Deprecated: use defaultNetwork instead FloatingNetID
|
||||||
|
defines a openstack ID for the floatingNet.'
|
||||||
|
type: string
|
||||||
|
image:
|
||||||
|
description: Image defines openstack image for the LoadBalancer.
|
||||||
|
properties:
|
||||||
|
image_id:
|
||||||
|
description: 'Deprecated: use imageID instead.'
|
||||||
|
type: string
|
||||||
|
image_name:
|
||||||
|
description: 'Deprecated: use imageName instead.'
|
||||||
|
type: string
|
||||||
|
image_search:
|
||||||
|
description: 'Deprecated: use imageSearch instead.'
|
||||||
|
type: string
|
||||||
|
imageID:
|
||||||
|
description: ImageID is the image ID used for requesting virtual
|
||||||
|
machines.
|
||||||
|
type: string
|
||||||
|
imageName:
|
||||||
|
description: NOT IMPLEMENTED ONLY ImageID is supported. ImageName
|
||||||
|
is the name of the image used for requesting virtual machines.
|
||||||
|
ImageName is only used if ImageID is not defined.
|
||||||
|
type: string
|
||||||
|
imageSearch:
|
||||||
|
description: NOT IMPLEMENTED ONLY ImageID is supported. ImageSearch
|
||||||
|
is a search string to find the image used for requesting
|
||||||
|
virtual machines. Search will be performed in metadata of
|
||||||
|
the images. ImageSearch is only used if ImageName and ImageID
|
||||||
|
are not defined.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
networkID:
|
||||||
|
description: 'Deprecated: use defaultNetwork instead NetworkID
|
||||||
|
defines a openstack ID for the network.'
|
||||||
|
type: string
|
||||||
|
projectID:
|
||||||
|
description: ProjectID defines an openstack project ID which will
|
||||||
|
be used instead of the project from the secret ref. If not set
|
||||||
|
the project from the secret ref will be used.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- authSecretRef
|
||||||
|
- flavor
|
||||||
|
- image
|
||||||
|
type: object
|
||||||
|
options:
|
||||||
|
description: Options for additional LoadBalancer settings
|
||||||
|
properties:
|
||||||
|
internalLB:
|
||||||
|
default: false
|
||||||
|
description: InternalLB is a bool for internal LoadBalancer. If
|
||||||
|
set to false a FloatingIP will be assigned to the LB. Defaults
|
||||||
|
to false.
|
||||||
|
type: boolean
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
description: LoadBalancerSourceRanges restrict traffic to IP ranges
|
||||||
|
for the LoadBalancer (copy from service)
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
logForward:
|
||||||
|
description: LogForward enables log forward to a loki instance
|
||||||
|
properties:
|
||||||
|
enabled:
|
||||||
|
description: Enabled defines if log forward is enabled
|
||||||
|
type: boolean
|
||||||
|
lokiUrl:
|
||||||
|
description: 'LokiUrl defines the loki push url (Example:
|
||||||
|
http://example.com:3100/loki/api/v1/push).'
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
serverGroupPolicy:
|
||||||
|
description: ServerGroupPolicy creates a server group with that
|
||||||
|
policy. Can be 'affinity', 'anti-affinity' 'soft-affinity',
|
||||||
|
'soft-anti-affinity' depending on the OpenStack Infrastructure.
|
||||||
|
If empty Openstack server group will not be used. Default is
|
||||||
|
disabled
|
||||||
|
type: string
|
||||||
|
tcpIdleTimeout:
|
||||||
|
description: TCPIdleTimeout sets TCP idle Timeout for all TCP
|
||||||
|
connections from this LoadBalancer. Value is in Seconds. With
|
||||||
|
0 you disable the idle timeout, be careful this can lead to
|
||||||
|
side effects. Default is 1h.
|
||||||
|
type: string
|
||||||
|
tcpProxyProtocol:
|
||||||
|
description: TCPProxyProtocol enables HAProxy TCP Proxy Protocol
|
||||||
|
type: boolean
|
||||||
|
tcpProxyProtocolPortFilter:
|
||||||
|
description: TCPProxyProtocolPortList enables HAProxy TCP Proxy
|
||||||
|
Protocol for specified ports. If empty it is enabled for all
|
||||||
|
ports. Only has an affect if TCPProxyProtocol is enabled.
|
||||||
|
items:
|
||||||
|
format: int32
|
||||||
|
type: integer
|
||||||
|
type: array
|
||||||
|
udpIdleTimeout:
|
||||||
|
description: UDPIdleTimeout sets UDP idle Timeout for all UDP
|
||||||
|
connections from this LoadBalancer. Value is in Seconds. With
|
||||||
|
0 you disable the idle timeout, be careful this can lead to
|
||||||
|
side effects. Default is 1m.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
ports:
|
||||||
|
description: Ports defines the Ports for the LoadBalancer (copy from
|
||||||
|
service)
|
||||||
|
items:
|
||||||
|
description: ServicePort contains information on service's port.
|
||||||
|
properties:
|
||||||
|
appProtocol:
|
||||||
|
description: The application protocol for this port. This field
|
||||||
|
follows standard Kubernetes label syntax. Un-prefixed names
|
||||||
|
are reserved for IANA standard service names (as per RFC-6335
|
||||||
|
and https://www.iana.org/assignments/service-names). Non-standard
|
||||||
|
protocols should use prefixed names such as mycompany.com/my-custom-protocol.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: The name of this port within the service. This
|
||||||
|
must be a DNS_LABEL. All ports within a ServiceSpec must have
|
||||||
|
unique names. When considering the endpoints for a Service,
|
||||||
|
this must match the 'name' field in the EndpointPort. Optional
|
||||||
|
if only one ServicePort is defined on this service.
|
||||||
|
type: string
|
||||||
|
nodePort:
|
||||||
|
description: 'The port on each node on which this service is
|
||||||
|
exposed when type is NodePort or LoadBalancer. Usually assigned
|
||||||
|
by the system. If a value is specified, in-range, and not
|
||||||
|
in use it will be used, otherwise the operation will fail. If
|
||||||
|
not specified, a port will be allocated if this Service requires
|
||||||
|
one. If this field is specified when creating a Service which
|
||||||
|
does not need it, creation will fail. This field will be wiped
|
||||||
|
when updating a Service to no longer need it (e.g. changing
|
||||||
|
type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport'
|
||||||
|
format: int32
|
||||||
|
type: integer
|
||||||
|
port:
|
||||||
|
description: The port that will be exposed by this service.
|
||||||
|
format: int32
|
||||||
|
type: integer
|
||||||
|
protocol:
|
||||||
|
default: TCP
|
||||||
|
description: The IP protocol for this port. Supports "TCP",
|
||||||
|
"UDP", and "SCTP". Default is TCP.
|
||||||
|
type: string
|
||||||
|
targetPort:
|
||||||
|
anyOf:
|
||||||
|
- type: integer
|
||||||
|
- type: string
|
||||||
|
description: 'Number or name of the port to access on the pods
|
||||||
|
targeted by the service. Number must be in the range 1 to
|
||||||
|
65535. Name must be an IANA_SVC_NAME. If this is a string,
|
||||||
|
it will be looked up as a named port in the target Pod''s
|
||||||
|
container ports. If this is not specified, the value of the
|
||||||
|
''port'' field is used (an identity map). This field is ignored
|
||||||
|
for services with clusterIP=None, and should be omitted or
|
||||||
|
set equal to the ''port'' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service'
|
||||||
|
x-kubernetes-int-or-string: true
|
||||||
|
required:
|
||||||
|
- port
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
replicas:
|
||||||
|
default: 1
|
||||||
|
description: Replicas defines the number of LoadBalancers that should
|
||||||
|
run.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
selector:
|
||||||
|
description: This label selector matches the load balancer sets deriving
|
||||||
|
from the load balancer
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
description: matchExpressions is a list of label selector requirements.
|
||||||
|
The requirements are ANDed.
|
||||||
|
items:
|
||||||
|
description: A label selector requirement is a selector that
|
||||||
|
contains values, a key, and an operator that relates the key
|
||||||
|
and values.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: key is the label key that the selector applies
|
||||||
|
to.
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: operator represents a key's relationship to
|
||||||
|
a set of values. Valid operators are In, NotIn, Exists
|
||||||
|
and DoesNotExist.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: values is an array of string values. If the
|
||||||
|
operator is In or NotIn, the values array must be non-empty.
|
||||||
|
If the operator is Exists or DoesNotExist, the values
|
||||||
|
array must be empty. This array is replaced during a strategic
|
||||||
|
merge patch.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: matchLabels is a map of {key,value} pairs. A single
|
||||||
|
{key,value} in the matchLabels map is equivalent to an element
|
||||||
|
of matchExpressions, whose key field is "key", the operator
|
||||||
|
is "In", and the values array contains only "value". The requirements
|
||||||
|
are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
required:
|
||||||
|
- infrastructure
|
||||||
|
- selector
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: LoadBalancerStatus defines the observed state of LoadBalancer.
|
||||||
|
properties:
|
||||||
|
externalIP:
|
||||||
|
description: ExternalIP is the current externalIP (FIP or private).
|
||||||
|
If not defined, no ExternalIP is bound yet.
|
||||||
|
type: string
|
||||||
|
floatingID:
|
||||||
|
description: FloatingID is the current openstack ID from the FloatingIP.
|
||||||
|
type: string
|
||||||
|
floatingName:
|
||||||
|
description: FloatingName is the current openstack name from the FloatingIP.
|
||||||
|
type: string
|
||||||
|
lastOpenstackReconcile:
|
||||||
|
description: LastOpenstackReconcile contains the timestamp of the
|
||||||
|
last openstack reconciliation.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
openstackReconcileHash:
|
||||||
|
description: OpenstackReconcileHash contains a hash of openstack related
|
||||||
|
settings to reset the LastOpenstackReconcile timer if needed.
|
||||||
|
type: string
|
||||||
|
portID:
|
||||||
|
description: PortID is the current openstack ID from the virtual Port.
|
||||||
|
type: string
|
||||||
|
portIP:
|
||||||
|
description: PortIP is the IP from the openstack virtual Port.
|
||||||
|
type: string
|
||||||
|
portName:
|
||||||
|
description: PortName is the current openstack name from the virtual
|
||||||
|
Port.
|
||||||
|
type: string
|
||||||
|
readyReplicas:
|
||||||
|
description: ReadyReplicas are the current running replicas.
|
||||||
|
type: integer
|
||||||
|
replicas:
|
||||||
|
description: Replicas displays the running lb replicas under this
|
||||||
|
deployment
|
||||||
|
type: integer
|
||||||
|
security_group_id:
|
||||||
|
description: 'Deprecated: use securityGroupID instead.'
|
||||||
|
type: string
|
||||||
|
security_group_name:
|
||||||
|
description: 'Deprecated: use securityGroupName instead.'
|
||||||
|
type: string
|
||||||
|
securityGroupID:
|
||||||
|
description: SecurityGroupID is the current security group ID mapped
|
||||||
|
to the port
|
||||||
|
type: string
|
||||||
|
securityGroupName:
|
||||||
|
description: SecurityGroupName is the current security group name
|
||||||
|
mapped to the port
|
||||||
|
type: string
|
||||||
|
serverGroupID:
|
||||||
|
description: ServerGroupID is the current sever group ID
|
||||||
|
type: string
|
||||||
|
serverGroupName:
|
||||||
|
description: ServerGroupName is the current sever group name
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
scale:
|
||||||
|
specReplicasPath: .spec.replicas
|
||||||
|
statusReplicasPath: .status.replicas
|
||||||
|
status: {}
|
@ -0,0 +1,306 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.11.3
|
||||||
|
creationTimestamp: null
|
||||||
|
name: loadbalancersets.yawol.stackit.cloud
|
||||||
|
spec:
|
||||||
|
group: yawol.stackit.cloud
|
||||||
|
names:
|
||||||
|
kind: LoadBalancerSet
|
||||||
|
listKind: LoadBalancerSetList
|
||||||
|
plural: loadbalancersets
|
||||||
|
shortNames:
|
||||||
|
- lbs
|
||||||
|
singular: loadbalancerset
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.replicas
|
||||||
|
name: DESIRED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.replicas
|
||||||
|
name: CURRENT
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.readyReplicas
|
||||||
|
name: READY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: LoadBalancerSet is the Schema for the LoadBalancerSet's 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: LoadBalancerSetSpec defines the desired state of LoadBalancerSet.
|
||||||
|
properties:
|
||||||
|
replicas:
|
||||||
|
default: 1
|
||||||
|
description: Replicas defines the number of LoadBalancer that should
|
||||||
|
run. Defaults to 1.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
selector:
|
||||||
|
description: Selector is a label query over pods that should match
|
||||||
|
the replica count.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
description: matchExpressions is a list of label selector requirements.
|
||||||
|
The requirements are ANDed.
|
||||||
|
items:
|
||||||
|
description: A label selector requirement is a selector that
|
||||||
|
contains values, a key, and an operator that relates the key
|
||||||
|
and values.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: key is the label key that the selector applies
|
||||||
|
to.
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: operator represents a key's relationship to
|
||||||
|
a set of values. Valid operators are In, NotIn, Exists
|
||||||
|
and DoesNotExist.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: values is an array of string values. If the
|
||||||
|
operator is In or NotIn, the values array must be non-empty.
|
||||||
|
If the operator is Exists or DoesNotExist, the values
|
||||||
|
array must be empty. This array is replaced during a strategic
|
||||||
|
merge patch.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: matchLabels is a map of {key,value} pairs. A single
|
||||||
|
{key,value} in the matchLabels map is equivalent to an element
|
||||||
|
of matchExpressions, whose key field is "key", the operator
|
||||||
|
is "In", and the values array contains only "value". The requirements
|
||||||
|
are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
template:
|
||||||
|
description: Template defines a template for the LoadBalancerMachine.
|
||||||
|
This is used to instantiate LoadBalancerMachine.
|
||||||
|
properties:
|
||||||
|
labels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: Labels for the LoadBalancerMachine
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: Spec is the spec for the LoadBalancerMachine.
|
||||||
|
properties:
|
||||||
|
infrastructure:
|
||||||
|
description: Infrastructure defines parameters for the Infrastructure.
|
||||||
|
properties:
|
||||||
|
additionalNetworks:
|
||||||
|
description: AdditionalNetworks defines additional networks
|
||||||
|
that will be added to the LoadBalancerMachines.
|
||||||
|
items:
|
||||||
|
description: LoadBalancerAdditionalNetwork defines additional
|
||||||
|
networks for the LoadBalancer
|
||||||
|
properties:
|
||||||
|
networkID:
|
||||||
|
description: NetworkID defines an openstack ID for
|
||||||
|
the network.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- networkID
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
authSecretRef:
|
||||||
|
description: AuthSecretRef defines a secretRef for the
|
||||||
|
openstack secret.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: name is unique within a namespace to
|
||||||
|
reference a secret resource.
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: namespace defines the space within which
|
||||||
|
the secret name must be unique.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
availabilityZone:
|
||||||
|
description: AvailabilityZone defines the openstack availability
|
||||||
|
zone for the LoadBalancer.
|
||||||
|
type: string
|
||||||
|
defaultNetwork:
|
||||||
|
description: DefaultNetwork defines the default/listener
|
||||||
|
network for the Loadbalancer. TODO Remove optional when
|
||||||
|
Deprecations are removed
|
||||||
|
properties:
|
||||||
|
floatingNetID:
|
||||||
|
description: FloatingNetID defines an openstack ID
|
||||||
|
for the floatingNet.
|
||||||
|
type: string
|
||||||
|
networkID:
|
||||||
|
description: NetworkID defines an openstack ID for
|
||||||
|
the network.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- networkID
|
||||||
|
type: object
|
||||||
|
flavor:
|
||||||
|
description: Flavor defines openstack flavor for the LoadBalancer.
|
||||||
|
properties:
|
||||||
|
flavor_id:
|
||||||
|
description: 'Deprecated: use flavorID instead.'
|
||||||
|
type: string
|
||||||
|
flavor_name:
|
||||||
|
description: 'Deprecated: use flavorName instead.'
|
||||||
|
type: string
|
||||||
|
flavor_search:
|
||||||
|
description: 'Deprecated: use flavorSearch instead.'
|
||||||
|
type: string
|
||||||
|
flavorID:
|
||||||
|
description: FlavorID is the flavor ID used for requesting
|
||||||
|
virtual machines.
|
||||||
|
type: string
|
||||||
|
flavorName:
|
||||||
|
description: NOT IMPLEMENTED ONLY FlavorID is supported.
|
||||||
|
FlavorName is the name of the flavor used for requesting
|
||||||
|
virtual machines. FlavorName is only used if FlavorID
|
||||||
|
is not defined.
|
||||||
|
type: string
|
||||||
|
flavorSearch:
|
||||||
|
description: NOT IMPLEMENTED ONLY FlavorID is supported.
|
||||||
|
FlavorSearch is a search string to find the flavor
|
||||||
|
used for requesting virtual machines. Search will
|
||||||
|
be performed in metadata of the flavors. FlavorSearch
|
||||||
|
is only used if FlavorName and FlavorID are not
|
||||||
|
defined.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
floatingNetID:
|
||||||
|
description: 'Deprecated: use defaultNetwork instead FloatingNetID
|
||||||
|
defines a openstack ID for the floatingNet.'
|
||||||
|
type: string
|
||||||
|
image:
|
||||||
|
description: Image defines openstack image for the LoadBalancer.
|
||||||
|
properties:
|
||||||
|
image_id:
|
||||||
|
description: 'Deprecated: use imageID instead.'
|
||||||
|
type: string
|
||||||
|
image_name:
|
||||||
|
description: 'Deprecated: use imageName instead.'
|
||||||
|
type: string
|
||||||
|
image_search:
|
||||||
|
description: 'Deprecated: use imageSearch instead.'
|
||||||
|
type: string
|
||||||
|
imageID:
|
||||||
|
description: ImageID is the image ID used for requesting
|
||||||
|
virtual machines.
|
||||||
|
type: string
|
||||||
|
imageName:
|
||||||
|
description: NOT IMPLEMENTED ONLY ImageID is supported.
|
||||||
|
ImageName is the name of the image used for requesting
|
||||||
|
virtual machines. ImageName is only used if ImageID
|
||||||
|
is not defined.
|
||||||
|
type: string
|
||||||
|
imageSearch:
|
||||||
|
description: NOT IMPLEMENTED ONLY ImageID is supported.
|
||||||
|
ImageSearch is a search string to find the image
|
||||||
|
used for requesting virtual machines. Search will
|
||||||
|
be performed in metadata of the images. ImageSearch
|
||||||
|
is only used if ImageName and ImageID are not defined.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
networkID:
|
||||||
|
description: 'Deprecated: use defaultNetwork instead NetworkID
|
||||||
|
defines a openstack ID for the network.'
|
||||||
|
type: string
|
||||||
|
projectID:
|
||||||
|
description: ProjectID defines an openstack project ID
|
||||||
|
which will be used instead of the project from the secret
|
||||||
|
ref. If not set the project from the secret ref will
|
||||||
|
be used.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- authSecretRef
|
||||||
|
- flavor
|
||||||
|
- image
|
||||||
|
type: object
|
||||||
|
loadBalancerRef:
|
||||||
|
description: LoadBalancerRef defines a reference to the LoadBalancer
|
||||||
|
Object.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name is unique within a namespace to reference
|
||||||
|
a LoadBalancer resource.
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: Namespace defines the space within which
|
||||||
|
the LoadBalancer name must be unique.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- namespace
|
||||||
|
type: object
|
||||||
|
portID:
|
||||||
|
description: PortID defines the openstack ID of the port attached
|
||||||
|
to the FloatingIP.
|
||||||
|
type: string
|
||||||
|
serverGroupID:
|
||||||
|
description: ServerGroupID defines the openstack ID of the
|
||||||
|
openstack server group.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- infrastructure
|
||||||
|
- loadBalancerRef
|
||||||
|
- portID
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- labels
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- selector
|
||||||
|
- template
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: LoadBalancerSetStatus defines the observed state of LoadBalancerSet.
|
||||||
|
properties:
|
||||||
|
availableReplicas:
|
||||||
|
description: AvailableReplicas are the current running replicas.
|
||||||
|
type: integer
|
||||||
|
readyReplicas:
|
||||||
|
description: ReadyReplicas are the current ready replicas.
|
||||||
|
type: integer
|
||||||
|
replicas:
|
||||||
|
description: Replicas are the desired replicas.
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
scale:
|
||||||
|
specReplicasPath: .spec.replicas
|
||||||
|
statusReplicasPath: .status.replicas
|
||||||
|
status: {}
|
@ -0,0 +1,3 @@
|
|||||||
|
{{- define "deploymentversion" -}}
|
||||||
|
apps/v1
|
||||||
|
{{- end -}}
|
@ -0,0 +1,113 @@
|
|||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
rules:
|
||||||
|
- apiGroups: ["yawol.stackit.cloud"]
|
||||||
|
resources:
|
||||||
|
- "loadbalancers"
|
||||||
|
- "loadbalancers/status"
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- "events"
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- patch
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- delete
|
||||||
|
- apiGroups: ["coordination.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- leases
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- delete
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- configmaps/status
|
||||||
|
- services/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
{{- if .Values.yawolCloudController.clusterRoleEnabled }}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
rules:
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- "events"
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- patch
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- services
|
||||||
|
- services/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- nodes
|
||||||
|
- nodes/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
{{- end }}
|
@ -0,0 +1,84 @@
|
|||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: yawol-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
rules:
|
||||||
|
- apiGroups: ["yawol.stackit.cloud"]
|
||||||
|
resources:
|
||||||
|
- "loadbalancersets"
|
||||||
|
- "loadbalancersets/status"
|
||||||
|
- "loadbalancermachines"
|
||||||
|
- "loadbalancermachines/status"
|
||||||
|
- "loadbalancers"
|
||||||
|
- "loadbalancers/status"
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- "secrets"
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- delete
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- "serviceaccounts"
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["rbac.authorization.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- "roles"
|
||||||
|
- "rolebindings"
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- "events"
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- patch
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- delete
|
||||||
|
- apiGroups: ["coordination.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- leases
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- delete
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- configmaps/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: yawol-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: yawol-controller
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: yawol-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: yawol-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
@ -0,0 +1,27 @@
|
|||||||
|
{{- if .Values.vpa.enabled }}
|
||||||
|
apiVersion: autoscaling.k8s.io/v1
|
||||||
|
kind: VerticalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: yawol-cloud-controller-vpa
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
targetRef:
|
||||||
|
apiVersion: {{ include "deploymentversion" . }}
|
||||||
|
kind: Deployment
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
updatePolicy:
|
||||||
|
updateMode: {{ .Values.vpa.yawolCloudController.mode }}
|
||||||
|
---
|
||||||
|
apiVersion: autoscaling.k8s.io/v1
|
||||||
|
kind: VerticalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: yawol-controller-vpa
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
targetRef:
|
||||||
|
apiVersion: {{ include "deploymentversion" . }}
|
||||||
|
kind: Deployment
|
||||||
|
name: yawol-controller
|
||||||
|
updatePolicy:
|
||||||
|
updateMode: {{ .Values.vpa.yawolController.mode }}
|
||||||
|
{{- end }}
|
@ -0,0 +1,96 @@
|
|||||||
|
{{- if .Values.yawolCloudController.enabled }}
|
||||||
|
apiVersion: {{ include "deploymentversion" . }}
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
labels:
|
||||||
|
garden.sapcloud.io/role: controlplane
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-cloud-controller
|
||||||
|
spec:
|
||||||
|
revisionHistoryLimit: 0
|
||||||
|
replicas: {{ .Values.replicas }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-cloud-controller
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-cloud-controller
|
||||||
|
{{- if .Values.podLabels }}
|
||||||
|
{{ toYaml .Values.podLabels | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: yawol-cloud-controller
|
||||||
|
containers:
|
||||||
|
- name: yawol-cloud-controller
|
||||||
|
image: "{{ .Values.yawolCloudController.image.repository }}:{{ default .Chart.AppVersion .Values.yawolCloudController.image.tag }}"
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
name: metrics
|
||||||
|
args:
|
||||||
|
{{- if .Values.yawolCloudController.additionalArguments }}
|
||||||
|
{{ toYaml .Values.yawolCloudController.additionalArguments | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
- -leader-elect
|
||||||
|
{{- if .Values.yawolClassName }}
|
||||||
|
- -classname={{ .Values.yawolClassName }}
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
{{- if .Values.namespace }}
|
||||||
|
- name: CLUSTER_NAMESPACE
|
||||||
|
value: {{ .Values.namespace }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolOSSecretName }}
|
||||||
|
- name: SECRET_NAME
|
||||||
|
value: {{ .Values.yawolOSSecretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolFloatingID }}
|
||||||
|
- name: FLOATING_NET_ID
|
||||||
|
value: {{ .Values.yawolFloatingID }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolNetworkID }}
|
||||||
|
- name: NETWORK_ID
|
||||||
|
value: {{ .Values.yawolNetworkID }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolFlavorID }}
|
||||||
|
- name: FLAVOR_ID
|
||||||
|
value: {{ .Values.yawolFlavorID }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolImageID }}
|
||||||
|
- name: IMAGE_ID
|
||||||
|
value: {{ .Values.yawolImageID }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolAvailabilityZone }}
|
||||||
|
- name: AVAILABILITY_ZONE
|
||||||
|
value: {{ .Values.yawolAvailabilityZone }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.resources.yawolCloudController }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.resources.yawolCloudController | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolCloudController.additionalVolumeMounts }}
|
||||||
|
volumeMounts:
|
||||||
|
{{ toYaml .Values.yawolCloudController.additionalVolumeMounts | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
dnsPolicy: ClusterFirst
|
||||||
|
restartPolicy: Always
|
||||||
|
{{- if .Values.yawolCloudController.additionalVolumes }}
|
||||||
|
volumes:
|
||||||
|
{{ toYaml .Values.yawolCloudController.additionalVolumes | indent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
@ -0,0 +1,131 @@
|
|||||||
|
apiVersion: {{ include "deploymentversion" . }}
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: yawol-controller
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
labels:
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-controller
|
||||||
|
spec:
|
||||||
|
revisionHistoryLimit: 0
|
||||||
|
replicas: {{ .Values.replicas }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-controller
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-controller
|
||||||
|
{{- if .Values.podLabels }}
|
||||||
|
{{ toYaml .Values.podLabels | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: yawol-controller
|
||||||
|
containers:
|
||||||
|
- name: yawol-controller-loadbalancer
|
||||||
|
image: "{{ .Values.yawolController.image.repository }}:{{ default .Chart.AppVersion .Values.yawolController.image.tag }}"
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
name: metrics
|
||||||
|
args:
|
||||||
|
- -leader-elect
|
||||||
|
- -enable-loadbalancer-controller
|
||||||
|
{{- if .Values.openstackTimeout }}
|
||||||
|
- -openstack-timeout={{ .Values.openstackTimeout }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolController.errorBackoffBaseDelay }}
|
||||||
|
- -error-backoff-base-delay={{ .Values.yawolController.errorBackoffBaseDelay }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolController.errorBackoffMaxDelay }}
|
||||||
|
- -error-backoff-max-delay={{ .Values.yawolController.errorBackoffMaxDelay }}
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
{{- if .Values.namespace }}
|
||||||
|
- name: CLUSTER_NAMESPACE
|
||||||
|
value: {{ .Values.namespace }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.resources.yawolControllerLoadbalancer }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.resources.yawolControllerLoadbalancer | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
- name: yawol-controller-loadbalancerset
|
||||||
|
image: "{{ .Values.yawolController.image.repository }}:{{ default .Chart.AppVersion .Values.yawolController.image.tag }}"
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- containerPort: 8081
|
||||||
|
name: metrics
|
||||||
|
args:
|
||||||
|
- -leader-elect
|
||||||
|
- -enable-loadbalancerset-controller
|
||||||
|
{{- if .Values.yawolController.errorBackoffBaseDelay }}
|
||||||
|
- -error-backoff-base-delay={{ .Values.yawolController.errorBackoffBaseDelay }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolController.errorBackoffMaxDelay }}
|
||||||
|
- -error-backoff-max-delay={{ .Values.yawolController.errorBackoffMaxDelay }}
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
{{- if .Values.namespace }}
|
||||||
|
- name: CLUSTER_NAMESPACE
|
||||||
|
value: {{ .Values.namespace }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.resources.yawolControllerLoadbalancerset }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.resources.yawolControllerLoadbalancerset | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
- name: yawol-controller-loadbalancermachine
|
||||||
|
image: "{{ .Values.yawolController.image.repository }}:{{ default .Chart.AppVersion .Values.yawolController.image.tag }}"
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- containerPort: 8082
|
||||||
|
name: metrics
|
||||||
|
args:
|
||||||
|
- -leader-elect
|
||||||
|
- -enable-loadbalancermachine-controller
|
||||||
|
{{- if .Values.openstackTimeout }}
|
||||||
|
- -openstack-timeout={{ .Values.openstackTimeout }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolController.errorBackoffBaseDelay }}
|
||||||
|
- -error-backoff-base-delay={{ .Values.yawolController.errorBackoffBaseDelay }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolController.errorBackoffMaxDelay }}
|
||||||
|
- -error-backoff-max-delay={{ .Values.yawolController.errorBackoffMaxDelay }}
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
{{- if .Values.namespace }}
|
||||||
|
- name: CLUSTER_NAMESPACE
|
||||||
|
value: {{ .Values.namespace }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolAPIHost }}
|
||||||
|
- name: API_ENDPOINT
|
||||||
|
value: {{ .Values.yawolAPIHost }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.resources.yawolControllerLoadbalancermachine }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.resources.yawolControllerLoadbalancermachine | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
restartPolicy: Always
|
@ -0,0 +1,140 @@
|
|||||||
|
{{- if .Values.yawolCloudController.gardenerMonitoringEnabled }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: yawol-cloud-controller-monitoring-config
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
extensions.gardener.cloud/configuration: monitoring
|
||||||
|
data:
|
||||||
|
scrape_config: |
|
||||||
|
- job_name: yawol-cloud-controller
|
||||||
|
scheme: http
|
||||||
|
honor_labels: false
|
||||||
|
kubernetes_sd_configs:
|
||||||
|
- role: endpoints
|
||||||
|
namespaces:
|
||||||
|
names: [{{ .Release.Namespace }}]
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels:
|
||||||
|
- __meta_kubernetes_service_name
|
||||||
|
- __meta_kubernetes_endpoint_port_name
|
||||||
|
action: keep
|
||||||
|
regex: yawol-cloud-controller;metrics
|
||||||
|
# common metrics
|
||||||
|
- action: labelmap
|
||||||
|
regex: __meta_kubernetes_service_label_(.+)
|
||||||
|
- source_labels: [ __meta_kubernetes_pod_name ]
|
||||||
|
target_label: pod
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: yawol-cloud-controller
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-cloud-controller
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
clusterIP: None
|
||||||
|
ports:
|
||||||
|
- name: metrics
|
||||||
|
port: 8080
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-cloud-controller
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.yawolController.gardenerMonitoringEnabled }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: yawol-controller-monitoring-config
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
extensions.gardener.cloud/configuration: monitoring
|
||||||
|
data:
|
||||||
|
scrape_config: |
|
||||||
|
- job_name: yawol-loadbalancer-controller-metrics
|
||||||
|
scheme: http
|
||||||
|
honor_labels: false
|
||||||
|
kubernetes_sd_configs:
|
||||||
|
- role: endpoints
|
||||||
|
namespaces:
|
||||||
|
names: [{{ .Release.Namespace }}]
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels:
|
||||||
|
- __meta_kubernetes_service_name
|
||||||
|
- __meta_kubernetes_endpoint_port_name
|
||||||
|
action: keep
|
||||||
|
regex: yawol-controller;metrics-lb
|
||||||
|
# common metrics
|
||||||
|
- action: labelmap
|
||||||
|
regex: __meta_kubernetes_service_label_(.+)
|
||||||
|
- source_labels: [ __meta_kubernetes_pod_name ]
|
||||||
|
target_label: pod
|
||||||
|
- job_name: yawol-loadbalancerset-controller-metrics
|
||||||
|
scheme: http
|
||||||
|
honor_labels: false
|
||||||
|
kubernetes_sd_configs:
|
||||||
|
- role: endpoints
|
||||||
|
namespaces:
|
||||||
|
names: [{{ .Release.Namespace }}]
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels:
|
||||||
|
- __meta_kubernetes_service_name
|
||||||
|
- __meta_kubernetes_endpoint_port_name
|
||||||
|
action: keep
|
||||||
|
regex: yawol-controller;metrics-lbs
|
||||||
|
# common metrics
|
||||||
|
- action: labelmap
|
||||||
|
regex: __meta_kubernetes_service_label_(.+)
|
||||||
|
- source_labels: [ __meta_kubernetes_pod_name ]
|
||||||
|
target_label: pod
|
||||||
|
- job_name: yawol-loadbalancermachine-controller-metrics
|
||||||
|
scheme: http
|
||||||
|
honor_labels: false
|
||||||
|
kubernetes_sd_configs:
|
||||||
|
- role: endpoints
|
||||||
|
namespaces:
|
||||||
|
names: [{{ .Release.Namespace }}]
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels:
|
||||||
|
- __meta_kubernetes_service_name
|
||||||
|
- __meta_kubernetes_endpoint_port_name
|
||||||
|
action: keep
|
||||||
|
regex: yawol-controller;metrics-lbm
|
||||||
|
# common metrics
|
||||||
|
- action: labelmap
|
||||||
|
regex: __meta_kubernetes_service_label_(.+)
|
||||||
|
- source_labels: [ __meta_kubernetes_pod_name ]
|
||||||
|
target_label: pod
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: yawol-controller
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-controller
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
clusterIP: None
|
||||||
|
ports:
|
||||||
|
- name: metrics-lb
|
||||||
|
port: 8080
|
||||||
|
protocol: TCP
|
||||||
|
- name: metrics-lbs
|
||||||
|
port: 8081
|
||||||
|
protocol: TCP
|
||||||
|
- name: metrics-lbm
|
||||||
|
port: 8082
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: kubernetes
|
||||||
|
role: yawol-controller
|
||||||
|
{{- end }}
|
@ -0,0 +1,100 @@
|
|||||||
|
replicas: 1
|
||||||
|
podAnnotations: {}
|
||||||
|
podLabels: {}
|
||||||
|
featureGates: {}
|
||||||
|
proxy: {}
|
||||||
|
namespace: kube-system
|
||||||
|
vpa:
|
||||||
|
enabled: false
|
||||||
|
yawolCloudController:
|
||||||
|
mode: Auto
|
||||||
|
yawolController:
|
||||||
|
mode: Auto
|
||||||
|
|
||||||
|
yawolCloudController:
|
||||||
|
enabled: true
|
||||||
|
gardenerMonitoringEnabled: false
|
||||||
|
clusterRoleEnabled: true
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/stackitcloud/yawol/yawol-cloud-controller
|
||||||
|
# -- Allows you to override the yawol version in this chart. Use at your own risk.
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
yawolController:
|
||||||
|
gardenerMonitoringEnabled: false
|
||||||
|
errorBackoffBaseDelay: 5ms
|
||||||
|
errorBackoffMaxDelay: 1000s
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/stackitcloud/yawol/yawol-controller
|
||||||
|
# -- Allows you to override the yawol version in this chart. Use at your own risk.
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
resources:
|
||||||
|
yawolCloudController:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 64Mi
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 512Mi
|
||||||
|
yawolControllerLoadbalancer:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 64Mi
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 512Mi
|
||||||
|
yawolControllerLoadbalancerset:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 64Mi
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 512Mi
|
||||||
|
yawolControllerLoadbalancermachine:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 64Mi
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 512Mi
|
||||||
|
|
||||||
|
#yawolClassName: debug
|
||||||
|
#openstackTimeout: 20s
|
||||||
|
|
||||||
|
# the name of the Kubernetes secret that contains the .openrc file contents
|
||||||
|
# with the correct permissions to connect to the OpenStack API
|
||||||
|
#
|
||||||
|
# Placed in LoadBalancer.spec.infrastructure.authSecretRef.name
|
||||||
|
yawolOSSecretName:
|
||||||
|
|
||||||
|
# floating IP ID of the IP pool that yawol uses to request IPs
|
||||||
|
#
|
||||||
|
# Placed in LoadBalancer.spec.infrastructure.floatingNetID
|
||||||
|
yawolFloatingID:
|
||||||
|
|
||||||
|
# OpenStack network ID in which the Load Balancer is placed
|
||||||
|
#
|
||||||
|
# Placed in LoadBalancer.spec.infrastructure.networkID
|
||||||
|
yawolNetworkID:
|
||||||
|
|
||||||
|
# default value for flavor that yawol Load Balancer instances should use
|
||||||
|
# can be overridden by annotation
|
||||||
|
#
|
||||||
|
# Placed in LoadBalancer.spec.infrastructure.flavor.flavor_id
|
||||||
|
yawolFlavorID:
|
||||||
|
|
||||||
|
# default value for ID of the image used for the Load Balancer instance
|
||||||
|
# can be overridden by annotation
|
||||||
|
#
|
||||||
|
# Placed in LoadBalancer.spec.infrastructure.image.image_id
|
||||||
|
yawolImageID:
|
||||||
|
|
||||||
|
# default value for the AZ used for the Load Balancer instance
|
||||||
|
# can be overridden by annotation. If not set, empty string is used.
|
||||||
|
#
|
||||||
|
# Placed in LoadBalancer.spec.infrastructure.availabilityZone
|
||||||
|
yawolAvailabilityZone: ""
|
||||||
|
|
||||||
|
# URL/IP of the Kubernetes API server that contains the LoadBalancer resources
|
||||||
|
yawolAPIHost:
|
Loading…
x
Reference in New Issue
Block a user