deploy/nuvolaris-permissions/whisk-crd.yaml (851 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. This rules applied in auto mode, otherwise uses alway the required protocol. Default to auto.
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
affinity:
description: enable/disable openwhisk configuration with node affinity. This flag can be true only on multinode cluster deployment. Default to false
type: boolean
tolerations:
description: enable/disable openwhisk toleration. This flag can be true only on multinode cluster deployment. Default to false
type: boolean
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/CEPH OBJECT STORE static internal service (requires components.minio or components.cephobjectstore 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
quota:
description: deploys the quota checker if supported by the operator
type: boolean
etcd:
description: deploys ETCD to support others components
type: boolean
milvus:
description: deploys Milvus Operator to support deployment of MILVUS Vector DB
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
failover:
description: enable or disable failover management. Defaulted to false
type: boolean
backup:
description: controls postgres automatic backup using pgdump_app based script
type: object
properties:
enabled:
description: boolean flag enabling/disabling backup. Defaulted to false
type: boolean
schedule:
description: cron based expression to control backup schedule. Default to once per hour at minute 30.
type: string
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
quota:
description: used to configure the internal scheduled based quota checker when quota is set to true
type: object
properties:
schedule:
description: a cron expression used to define the scheduler execution interval defaults to "*/10 * * * *" every 10 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 configure 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
ingress:
description: configuration option for global minio ingresses exposure
type: object
properties:
s3-enabled:
description: boolean flag to activate MINIO S3 compatible ingress. Default to false
type: boolean
s3-hostname:
description: ingress hostname to be used if true (normally s3.<apihost>)
type: string
console-enabled:
description: boolean flag to expose MINIO console
type: boolean
console-hostname:
description: ingress hostname to be used (nora=mally minio.<apihost>)
type: string
required:
- s3-enabled
- console-enabled
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:
replicas:
description: controller statefulset replicas. Defaults to 1
type: integer
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:
replicas:
description: invoker statefulset replicas. Defaults to 1. When used be sure to enable also pod affinity
type: integer
kubernetes:
description: specific kubernetes settings controlled by the invoker
type: object
properties:
timeouts_run:
description: pod run max timeout waited by the invoker. Defaults to 1 minute
type: integer
timeouts_logs:
description: pod max timeout waited by the invoker to collect logs. Defaults to 1 minute
type: integer
user_pod_affinity_enabled:
description: boolean falg to enable/disable user pod affinity. Default to false
type: boolean
user_pod_affinity_key:
description: node label to be used for the invoker pod affinity. Defaults to nuvolaris-role
type: string
user_pod_affinity_value:
description: node label value used for the invoker pod affinity. Defaults to invoker
type: string
port_forwarding_enabled:
description: boolean falg to enable/disable port forwarding. Default to false
type: boolean
action_namespace:
description: Action namespace. Default to nuvolaris
type: string
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
ectd:
description: used to configure a nuvolaris shared ETCD instance
type: object
properties:
volume-size:
description: ETCD data volume size in GB
type: integer
replicas:
description: number of total postgres replicas (1 primary, N-1 replicas). Defaulted to 1
type: integer
auto-compaction-retention:
description: defines how long to retain historical versions of keys before automatically compacting them
type: string
quota-backend-bytes:
description: the etcd backend database has a default size limit of 2 GiB. This can be increased explicitly
type: integer
root:
description: ETCD root user credentials
type: object
properties:
password:
description: ETCD root user password
type: string
required:
- password
milvus:
description: used to configure a nuvolaris shared MILVUS instance
type: object
properties:
volume-size:
description: ETCD data volume size in GB for the internal PULSAR instances
type: object
properties:
cluster:
description: milvus instance volume size
type: integer
zookeeper:
description: pulsar zookeeper instance volume size
type: integer
journal:
description: pulsar bookie journal instance volume size
type: integer
ledgers:
description: pulsar bookie ledgers instance volume size
type: integer
replicas:
description: number of total milvus replicas. Defaulted to 1
type: integer
proxy:
description: MILVUS proxy related params
type: object
properties:
max-role-num:
description: Modify the Milvus maximum role limit
type: integer
max-user-num:
description: Modify the Milvus maximum user limit
type: integer
root-coord:
description: MILVUS rootCoord related params
type: object
properties:
max-database-num:
description: Modify the Milvus maximum database number
type: integer
password:
description: MILVUS related user passwords
type: object
properties:
root:
description: milvus root password
type: string
etcd:
description: ETCD milvus user password
type: string
s3:
description: MINIO/S3 milvus user password
type: string
required:
- root
- s3
nuvolaris:
description: MILVUS default user setup
type: object
properties:
password:
description: nuvolaris MILVUS password
type: string
collection:
description: nuvolaris MILVUS collection (default to nuvolaris)
type: string
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: Status
type: string
priority: 0
jsonPath: .status.whisk_create.controller
description: Status
- 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
- name: Quota
type: string
priority: 0
jsonPath: .status.whisk_create.quota
description: Quota
- name: Monitoring
type: string
priority: 0
jsonPath: .status.whisk_create.monitoring
description: Monitoring
- name: Static
type: string
priority: 0
jsonPath: .status.whisk_create.static
description: Static
- name: Etcd
type: string
priority: 0
jsonPath: .status.whisk_create.etcd
description: Etcd
- name: Milvus
type: string
priority: 0
jsonPath: .status.whisk_create.milvus
description: Milvus