stress-test/olaris-stress/setup/kubernetes/crds/whisk-crd.yaml (643 lines of code) (raw):
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: whisks.nuvolaris.org
namespace: nuvolaris
spec:
scope: Namespaced
group: nuvolaris.org
names:
kind: Whisk
plural: whisks
singular: whisk
shortNames:
- wsk
versions:
- name: v1
served: true
storage: true
subresources: { status: { } }
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
x-kubernetes-preserve-unknown-fields: true
properties:
nuvolaris:
description: Used to specify the openwishk apihost. It can be omitted on kubernetes having ingress attached to external LB (AKS, EKS, LKS etc)
type: object
properties:
password:
description: a password to be used to impersonate the nuvolaris user over some specific whisk_system action as the devel one.
type: string
apihost:
description: a valid api hostname or ip address. If set to auto the ip address of the kubernetes cluster will be used to generate a hostname with <ip>.nip.io
type: string
apiport:
type: integer
protocol:
description: protocol to be used. Defaulted to http if TLS is not enabled. On Kind it will be always http
type: string
enum:
- http
- https
- auto
kube:
description: label representing the kubernetes runtime used to implement specific logic (kind, eks, aks, lks, microk8s, k3s, openshift). Defaulted to auto which is causing the operator to autodetect the k8s runtime.
type: string
storageclass:
description: allow to set a defined storage class. Default to auto which will force the operator to autodetect the storage class.
type: string
provisioner:
description: allow to set a defined storage class provisioner. Default to auto which will force the operator to autodetect the storage class provisioner.
type: string
ingressclass:
description: allow to set a defined ingress class. Default to auto which will force the operator to autodetect the ingress class.
type: string
ingresslb:
description: allow to set the location of the ingress lb in the form namespace/service-name. Default to auto which will force the operator to use default values based on the environment.
type: string
required:
- password
components:
description: it allows which components needs to be deployed by default. For a minimal setup openwhisk and couchdb are required to be set to true
type: object
x-kubernetes-preserve-unknown-fields: true
properties:
openwhisk:
description: deploys ow controller in lean mode
type: boolean
invoker:
description: deploys ow invoker if supported by the operator
type: boolean
couchdb:
description: deploys couchdb
type: boolean
kafka:
description: deploys kafka
type: boolean
mongodb:
description: deploys mongodb
type: boolean
redis:
description: deploys redis
type: boolean
cron:
description: activate the nuvolaris internal scheduled action executor
type: boolean
tls:
description: enables TLS support via let's encrypt certificate for the ow apihost
type: boolean
minio:
description: deploys MINIO as storage
type: boolean
static:
description: activate the MINIO static internal service (requires components.minio to be true)
type: boolean
zookeeper:
description: deploys zookeeper if supported by the operator
type: boolean
postgres:
description: deploys postgress if supported by the operator
type: boolean
required:
- openwhisk
- couchdb
openwhisk:
description: Used to setup the default OW namespaces assigned to whisk-system and nuvolaris
type: object
properties:
namespaces:
type: object
properties:
whisk-system:
description: the auth value to be used for the whisk-system user
type: string
nuvolaris:
description: the auth value to be used for the nuvolaris user
type: string
required:
- whisk-system
- nuvolaris
required:
- namespaces
couchdb:
description: used to configure the couchdb instance used internally by OW
type: object
properties:
host:
description: couchdb internal service name. Defaulted to couchdb
type: string
port:
description: couchdb port defaulted to 5984
type: integer
volume-size:
description: couchdb volume size in GB
type: integer
admin:
description: Couchdb admin credentials
type: object
properties:
user:
type: string
password:
type: string
required:
- user
- password
controller:
description: Couchdb credentials used by the OW controller to read/write data
type: object
properties:
user:
type: string
password:
type: string
required:
- user
- password
invoker:
description: Couchdb credentials used by the OW invoker to read/write data
type: object
properties:
user:
type: string
password:
type: string
required:
- user
- password
required:
- volume-size
- admin
- controller
mongodb:
description: used to configure a nuvolaris shared mongodb instance
type: object
properties:
host:
description: mongodb hostname
type: string
volume-size:
description: mongodb volume size in GB
type: integer
exposedExternally:
type: boolean
useOperator:
description: boolean flag used to deploy mongodb using teh community operator. It default to false
type: boolean
admin:
description: mongodb admin suer credentials
type: object
properties:
user:
type: string
password:
type: string
required:
- user
- password
nuvolaris:
description: mongodb nuvolaris database credentials
type: object
properties:
user:
type: string
password:
type: string
required:
- user
- password
required:
- host
- volume-size
- admin
- nuvolaris
postgres:
description: used to configure a nuvolaris shared postgres instance
type: object
properties:
volume-size:
description: postgres volume size in GB
type: integer
replicas:
description: number of total postgres replicas (1 primary, N-1 replicas). Defaulted to 2
type: integer
admin:
description: postgres admin user credentials
type: object
properties:
password:
type: string
replica-password:
type: string
required:
- password
- replica-password
nuvolaris:
description: postgres nuvolaris database credentials
type: object
properties:
password:
type: string
required:
- password
required:
- volume-size
- admin
- nuvolaris
kafka:
description: setup a kafka instance
type: object
properties:
host:
description: kafka hostname defaulted to kafka
type: string
volume-size:
type: integer
required:
- host
- volume-size
zookeeper:
description: configure zookeeper properties
type: object
properties:
host:
description: zookeeper hostname defaulted to zookeeper
type: string
data-volume-size:
description: data volume size in GB
type: integer
log-volume-size:
description: log volume size in GB
type: integer
required:
- host
- data-volume-size
- log-volume-size
scheduler:
description: used to configure the internal scheduled based action executor when cron is set to true
type: object
properties:
schedule:
description: a cron expression used to define the scheduler execution interval defaults to "* * * * *" every minutes
type: string
required:
- schedule
tls:
description: required to configure a let's encrypt cluster issue used to autorenew the apihost SSL certificates
type: object
properties:
acme-registered-email:
description: an email address to receive let's encrypt notification about SSL/TLS certificate expiration
type: string
acme-server-url:
description: a valid let's encypt url. For prod certificates use https://acme-staging-v02.api.letsencrypt.org/directory
type: string
required:
- acme-registered-email
- acme-server-url
minio:
description: used to oconfigure the internal minio data storage service
type: object
properties:
volume-size:
description: volume size in GB
type: integer
admin:
description: used to configure the MINIO admin user
type: object
properties:
user:
type: string
password:
type: string
required:
- user
- password
nuvolaris:
description: used to configure the MINIO nuvolaris user used for non administrative purposes
type: object
properties:
user:
type: string
password:
type: string
required:
- user
- password
required:
- volume-size
- admin
- nuvolaris
redis:
description: used to configure redis default credentials
type: object
properties:
max-memory:
description: specify redis max memory setting. Default to 1000mb
type: string
persistence-enabled:
description: specify whether to enable or not REDIS persistence. Default to false
type: boolean
volume-size:
description: redis volume size in GB to be assigned if persistence is enabled
type: integer
default:
description: used to configure REDIS default admin credentials
type: object
properties:
password:
type: string
required:
- password
nuvolaris:
description: used to configure nuvolaris REDIS user
type: object
properties:
prefix:
description: REDIS nuvolaris key prefix. Defaulted to "nuvolaris:" if missing
type: string
password:
type: string
required:
- password
required:
- volume-size
- default
- nuvolaris
configs:
description: Configuration parameters to customize OW controller/invoker
type: object
properties:
limits:
type: object
properties:
activations:
description: control ow activations limits
type: object
properties:
max_allowed_payload:
description: activation max allowed payload size in bytes. Defaults to 1048576 (1MB)
type: integer
required:
- max_allowed_payload
actions:
description: control ow actions execution limits
type: object
properties:
sequence-maxLength:
description: default to 50
type: integer
invokes-perMinute:
description: default to 999
type: integer
invokes-concurrent:
description: default to 250
type: integer
required:
- sequence-maxLength
- invokes-perMinute
- invokes-concurrent
triggers:
type: object
properties:
fires-perMinute:
description: default to 999
type: integer
required:
- fires-perMinute
time:
description: controls ow action timeout
type: object
properties:
limit-min:
description: defaulted to "100ms"
type: string
limit-std:
description: defaulted to "1min"
type: string
limit-max:
description: defaulted to "5min"
type: string
required:
- limit-min
- limit-std
- limit-max
memory:
description: controls memory limits per ow actions
type: object
properties:
limit-min:
description: defaulted to "128m"
type: string
limit-std:
description: defaulted to "256m"
type: string
limit-max:
description: defaulted to "512m"
type: string
required:
- limit-min
- limit-std
- limit-max
concurrency:
description: controls ow action concurrency
type: object
properties:
limit-min:
description: defaulted to 1
type: integer
limit-std:
description: defaulted to 1
type: integer
limit-max:
description: defaulted to 1
type: integer
required:
- limit-min
- limit-std
- limit-max
loadbalancer:
description: controls load balancer behavior
type: object
properties:
blackbox-fraction:
description: blackbox images load balancer max allowed blackbox-fraction. Defaulted to "10%"
type: string
timeout-factor:
description: Defaultd to 2
type: integer
required:
- blackbox-fraction
- timeout-factor
couchdb:
description: configure couchdb limits
type: object
properties:
resources:
description: resource limits specification for the controller container
type: object
properties:
cpu-req:
description: container cpu requested resources. Defaulted to 256m
type: string
cpu-lim:
description: max container cpu allowed resources. Defaulted to 1
type: string
mem-req:
description: container memory requested. Defaulted to 1G
type: string
mem-lim:
description: container container max memory allowed. Defaulted to 2G
type: string
required:
- cpu-req
- cpu-lim
- mem-req
- mem-lim
required:
- resources
controller:
description: configure the OW controller
type: object
properties:
javaOpts:
description: controller java memory settings defaulted to "-Xmx2048M"
type: string
loggingLevel:
description: controller logging level defaulted to INFO
type: string
enum:
- INFO
- DEBUG
- WARN
- ERROR
- TRACE
resources:
description: resource limits specification for the controller container
type: object
properties:
cpu-req:
description: container cpu requested resources. Defaulted to 500m
type: string
cpu-lim:
description: max container cpu allowed resources. Defaulted to 1
type: string
mem-req:
description: container memory requested. Defaulted to 1G
type: string
mem-lim:
description: container container max memory allowed. Defaulted to 2G
type: string
required:
- cpu-req
- cpu-lim
- mem-req
- mem-lim
required:
- javaOpts
invoker:
description: configure the OW invoker if supported by the oeprator
type: object
properties:
javaOpts:
description: invoker memory settings defaulted to "-Xmx1024M"
type: string
loggingLevel:
description: invoker logging level defaulted to INFO
type: string
enum:
- INFO
- DEBUG
- WARN
- ERROR
- TRACE
containerPool:
type: object
properties:
userMemory:
description: containerPool user memory defaulted to "2048m". This values allows to control how many action per invoker instance can be launched by dividing this value by the
avg memory action memory settings
type: string
required:
- userMemory
resources:
description: resource limits specification for the invoker container
type: object
properties:
cpu-req:
description: container cpu requested resources. Defaulted to 500m
type: string
cpu-lim:
description: max container cpu allowed resources. Defaulted to 1
type: string
mem-req:
description: container memory requested. Defaulted to 1G
type: string
mem-lim:
description: container container max memory allowed. Defaulted to 2G
type: string
required:
- cpu-req
- cpu-lim
- mem-req
- mem-lim
required:
- containerPool
status:
x-kubernetes-preserve-unknown-fields: true
# type: object
# properties:
# wsk_create:
# type: object
# properties:
# openwhisk:
# type: string
# invoker:
# type: string
# couchdb:
# type: string
# kafka:
# type: string
# mongodb:
# type: string
# redis:
# type: string
# cron:
# type: string
# tls:
# type: string
# minio:
# type: string
# postgres:
# type: string
additionalPrinterColumns:
- name: OpenWhisk
type: string
priority: 0
jsonPath: .status.whisk_create.openwhisk
description: OpenWhisk
- name: Invoker
type: string
priority: 0
jsonPath: .status.whisk_create.invoker
description: Invoker
- name: CouchDB
type: string
priority: 0
jsonPath: .status.whisk_create.couchdb
description: CouchDB
- name: Kafka
type: string
priority: 0
jsonPath: .status.whisk_create.kafka
description: Kafka
- name: MongoDB
type: string
priority: 0
jsonPath: .status.whisk_create.mongodb
description: MongoDB
- name: Redis
type: string
priority: 0
jsonPath: .status.whisk_create.redis
description: Redis
- name: Cron
type: string
priority: 0
jsonPath: .status.whisk_create.cron
description: Cron
- name: Tls
type: string
priority: 0
jsonPath: .status.whisk_create.tls
description: Tls
- name: Minio
type: string
priority: 0
jsonPath: .status.whisk_create.minio
description: Minio
- name: Postgres
type: string
priority: 0
jsonPath: .status.whisk_create.postgres
description: Postgres