setup/kubernetes/whisk.yaml (205 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: nuvolaris.org/v1 kind: Whisk metadata: name: controller namespace: nuvolaris spec: nuvolaris: password: $SECRET_NUVOLARIS_METADATA kube: ${OPERATOR_CONFIG_KUBE:-auto} apihost: ${OPERATOR_CONFIG_APIHOST} storageclass: ${OPERATOR_CONFIG_STORAGECLASS:-auto} provisioner: ${OPERATOR_CONFIG_STORAGEPROVISIONER:-auto} protocol: ${OPERATOR_CONFIG_HOSTPROTOCOL:-auto} affinity: ${OPERATOR_CONFIG_AFFINITY:-false} tolerations: ${OPERATOR_CONFIG_TOLERATIONS:-false} components: # start openwhisk controller openwhisk: true # start openwhisk invoker invoker: true # start couchdb couchdb: true # start zookeeper zookeeper: true # start kafka kafka: true # prometheus monitoring enabled or not monitoring: ${OPERATOR_COMPONENT_PROMETHEUS:-false} # start mongodb mongodb: ${OPERATOR_COMPONENT_MONGODB:-false} # start redis redis: ${OPERATOR_COMPONENT_REDIS:-false} # start cron based action parser cron: ${OPERATOR_COMPONENT_CRON:-false} # enable TLS tls: ${OPERATOR_COMPONENT_TLS:-false} # minio enabled or not minio: ${OPERATOR_COMPONENT_MINIO:-false} # minio static enabled or not static: ${OPERATOR_COMPONENT_STATIC:-false} # postgres enabled or not postgres: ${OPERATOR_COMPONENT_POSTGRES:-false} # quota enabled or not quota: ${OPERATOR_COMPONENT_QUOTA:-false} # etcd enabled or not etcd: ${OPERATOR_COMPONENT_ETCD:-false} # MILVUS enabled or not milvus: ${OPERATOR_COMPONENT_MILVUS:-false} tls: acme-registered-email: ${OPERATOR_CONFIG_TLSEMAIL:-no-reply@email.com} acme-server-url: https://acme-v02.api.letsencrypt.org/directory openwhisk: namespaces: whisk-system: $SECRET_OPENWHISK_SYSTEM nuvolaris: $SECRET_OPENWHISK_NUVOLARIS couchdb: host: couchdb volume-size: ${STORAGE_SIZE_COUCHDB:-30} admin: user: whisk_admin password: $SECRET_COUCHDB_ADMIN controller: user: controller_admin password: $SECRET_COUCHDB_INVOKER invoker: user: invoker_admin password: $SECRET_COUCHDB_CONTROLLER kafka: host: kafka volume-size: ${STORAGE_SIZE_KAFKA:-30} zookeeper: host: zookeeper data-volume-size: ${STORAGE_SIZE_ZOOKEEPER:-5} log-volume-size: ${STORAGE_SIZE_ZOOKEEPER:-5} controller: protocol: "http" host : "controller" port: "3233" image: "$IMAGES_CONTROLLER" invoker: protocol: "http" host : "invoker" port: "8080" image: "$IMAGES_INVOKER" scheduler: schedule: "* * * * *" quota: schedule: "*/10 * * * *" configs: limits: activations: max_allowed_payload: ${OPENWHISK_ACTIVATION_MAX_ALLOWED_PAYLOAD:-1048576} actions: sequence-maxLength: ${OPENWHISK_ACTION_SEQUENCE_MAX_LENGTH:-50} invokes-perMinute: ${OPENWHISK_ACTION_INVOKE_PER_MINUTE:-999} invokes-concurrent: ${OPENWHISK_ACTION_INVOKE_CONCURRENT:-250} triggers: fires-perMinute: ${OPENWHISK_TRIGGER_PER_MINUTE:-999} time: limit-min: "${OPENWHISK_TIME_LIMIT_MIN:-100ms}" limit-std: "${OPENWHISK_TIME_LIMIT_STD:-1min}" limit-max: "${OPENWHISK_TIME_LIMIT_MAX:-5min}" memory: limit-min: "${OPENWHISK_ACTION_MEMORY_LIMIT_MIN:-128m}" limit-std: "${OPENWHISK_ACTION_MEMORY_LIMIT_STD:-256m}" limit-max: "${OPENWHISK_ACTION_MEMORY_LIMIT_MAX:-2048m}" loadbalancer: blackbox-fraction : "10%" timeout-factor: 2 controller: javaOpts: "$OPENWHISK_CONTROLLER_JAVA_OPTS" loggingLevel: "${OPENWHISK_CONTROLLER_LOGGINGLEVEL:-INFO}" replicas: ${OPENWHISK_CONTROLLER_REPLICAS:-1} resources: cpu-req: "500m" cpu-lim: "1" mem-req: "$OPENWHISK_CONTROLLER_RES_MIN_MEM" mem-lim: "$OPENWHISK_CONTROLLER_RES_MAX_MEM" invoker: javaOpts: "$OPENWHISK_INVOKER_JAVA_OPTS" loggingLevel: "${OPENWHISK_INVOKER_LOGGINGLEVEL:-INFO}" replicas: ${OPENWHISK_INVOKER_REPLICAS:-1} containerPool: userMemory: "$OPENWHISK_INVOKER_CONTAINER_POOL_MEMORY" kubernetes: user_pod_affinity_enabled: ${NUVOLARIS_AFFINITY:-false} user_pod_affinity_key : "nuvolaris-role" user_pod_affinity_value : "invoker" timeouts_run: ${OPENWHISK_INVOKER_KUBERNETES_TIMEOUT_RUN:-1} timeouts_logs: ${OPENWHISK_INVOKER_KUBERNETES_TIMEOUT_LOGS:-1} resources: cpu-req: "500m" cpu-lim: "1" mem-req: "$OPENWHISK_INVOKER_RES_MIN_MEM" mem-lim: "$OPENWHISK_INVOKER_RES_MAX_MEM" redis: persistence-enabled: ${REDIS_PERSISTENCE_ENABLED:-true} volume-size: ${STORAGE_SIZE_REDIS:-25} default: password: $SECRET_REDIS_DEFAULT nuvolaris: prefix: nuvolaris password: $SECRET_REDIS_NUVOLARIS mongodb: host: mongodb volume-size: ${STORAGE_SIZE_MONGODB:-50} admin: user: whisk_admin password: $SECRET_MONGODB_ADMIN nuvolaris: user: nuvolaris password: $SECRET_MONGODB_NUVOLARIS exposedExternally: False useOperator: False minio: ingress: s3-enabled: ${MINIO_CONFIG_INGRESS_S3:-false} console-enabled: ${MINIO_CONFIG_INGRESS_CONSOLE:-false} s3-hostname: ${MINIO_CONFIG_INGRESS_S3_HOSTNAME:-auto} console-hostname: ${MINIO_CONFIG_INGRESS_CONSOLE_HOSTNAME:-auto} volume-size: ${STORAGE_SIZE_MINIO:-50} admin: user: minioadmin password: $SECRET_MINIO_ADMIN nuvolaris: user: nuvolaris password: $SECRET_MINIO_NUVOLARIS postgres: volume-size: ${STORAGE_SIZE_POSTGRES:-50} replicas: ${POSTGRES_CONFIG_REPLICAS:-2} admin: password: $SECRET_POSTGRES_ADMIN replica-password: $SECRET_POSTGRES_REPLICA nuvolaris: password: $SECRET_POSTGRES_NUVOLARIS failover: ${POSTGRES_CONFIG_FAILOVER:-false} backup: enabled: ${POSTGRES_CONFIG_BACKUP_ENABLED:-false} schedule: "${POSTGRES_CONFIG_BACKUP_SCHEDULE:-0 */1 * * *}" monitoring: prometheus: volume-size: ${STORAGE_SIZE_MONITORING:-30} alert-manager: enabled: ${OPERATOR_COMPONENT_AM:-false} volume-size: ${STORAGE_SIZE_MONITORING:-30} slack: enabled: ${OPERATOR_CONFIG_ALERTSLACK:-false} default: true slack_channel_name: "$OPERATOR_CONFIG_SLACK_CHANNELNAME" slack_api_url: "$OPERATOR_CONFIG_SLACK_APIURL" gmail: enabled: ${OPERATOR_CONFIG_ALERTGMAIL:-false} default: false from: $OPERATOR_CONFIG_EMAIL_FROM to: $OPERATOR_CONFIG_EMAIL_TO username: $OPERATOR_CONFIG_GMAIL_USERNAME password: $OPERATOR_CONFIG_GMAIL_PASSWORD etcd: volume-size: ${STORAGE_SIZE_ETCD:-25} replicas: ${ETCD_CONFIG_REPLICAS:-3} auto-compaction-retention: "${ETCD_AUTO_COMPACTION_RETENTION:-1}" quota-backend-bytes: ${ETCD_QUOTA_BACKEND_BYTES:-2147483648} root: password: $SECRET_ETCD_ROOT milvus: volume-size: cluster: ${STORAGE_SIZE_MILVUS_CLUSTER:-20} zookeeper: ${STORAGE_SIZE_MILVUS_ZOOKEEPER:-10} journal: ${STORAGE_SIZE_MILVUS_PULSAR_JOURNAL:-25} ledgers: ${STORAGE_SIZE_MILVUS_PULSAR_LEDGERS:-50} replicas: ${MILVUS_CONFIG_REPLICAS:-1} proxy: max-role-num: ${PROXY_MILVUS_MAX_ROLE_NUM:-100} max-user-num: ${PROXY_MILVUS_MAX_USER_NUM:-100} root-coord: max-database-num: ${ROOTCOORD_MILVUS_DATABASE_NUM:-64} password: root: $SECRET_MILVUS_ROOT s3: $SECRET_MILVUS_S3 nuvolaris: password: $SECRET_MILVUS_NUVOLARIS