nuvolaris/templates/invoker-sts.yaml (217 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. --- # Source: openwhisk/templates/invoker-pod.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: invoker namespace: nuvolaris labels: name: invoker app: invoker spec: serviceName: invoker podManagementPolicy: "Parallel" replicas: {{invoker_replicas}} selector: matchLabels: name: invoker template: metadata: labels: name: invoker app: invoker annotations: whisks.nuvolaris.org/annotate-version: "true" spec: serviceAccountName: openwhisk-invoker restartPolicy: Always initContainers: - name: check-kafka image: busybox:1.36.0 command: ['sh', '-c', "until nslookup kafka.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for kafka; sleep 2; done"] containers: - name: invoker image: "ghcr.io/nuvolaris/openwhisk-invoker:0.3.0-morpheus.22122609" imagePullPolicy: "IfNotPresent" command: [ "/bin/bash", "-c", "/init.sh --uniqueName $INVOKER_NAME" ] #command: ["sleep", "inf"] {% if container_manage_resources %} resources: requests: memory: "{{container_mem_req}}" cpu : "{{container_cpu_req}}" limits: memory: "{{container_mem_lim}}" cpu : "{{container_cpu_lim}}" {% endif %} env: - name: "CONFIG_whisk_info_date" value: "01-01-2023" - name: "CONFIG_whisk_info_buildNo" value: "development-unknown" - name: "PORT" value: "{{invoker_port}}" - name: "WHISK_API_HOST_PROTO" value: "{{controller_protocol}}" - name: "WHISK_API_HOST_PORT" value: "{{controller_port}}" - name: "WHISK_API_HOST_NAME" value: "{{controller_host}}.nuvolaris.svc.cluster.local" # Needed by invoker to configure the container factory & container pool - name: "CONFIG_whisk_docker_containerFactory_useRunc" value: "false" - name: "CONFIG_whisk_containerPool_userMemory" value: "{{invoker_containerpool_usermemory}}" - name: "CONFIG_whisk_containerFactory_containerArgs_network" value: "bridge" - name: "CONFIG_whisk_containerFactory_containerArgs_extraEnvVars_0" value: "__OW_ALLOW_CONCURRENT=false" - name: "CONFIG_whisk_containerFactory_runtimesRegistry_url" value: "" # Invoker name is the name of the node (DaemonSet) or pod (StatefulSet) - name: "INVOKER_NAME" valueFrom: fieldRef: fieldPath: metadata.name # Java options - name: "JAVA_OPTS" value: "{{invoker_java_opts}} " # Invoker options - name: "INVOKER_OPTS" value: "-Dkubernetes.master=https://$KUBERNETES_SERVICE_HOST -Dwhisk.spi.ContainerFactoryProvider=org.apache.openwhisk.core.containerpool.kubernetes.KubernetesContainerFactoryProvider" # action runtimes - name: "RUNTIMES_MANIFEST" valueFrom: configMapKeyRef: name: openwhisk-runtimes key: runtimes.json # Action limits - name: "LIMITS_ACTIONS_INVOKES_PERMINUTE" value: "{{actions_invokes_perMinute}}" - name: "LIMITS_ACTIONS_INVOKES_CONCURRENT" value: "{{actions_invokes_concurrent}}" - name: "LIMITS_TRIGGERS_FIRES_PERMINUTE" value: "{{triggers_fires_perMinute}}" - name: "LIMITS_ACTIONS_SEQUENCE_MAXLENGTH" value: "{{actions_sequence_maxLength}}" - name: "CONFIG_whisk_timeLimit_min" value: "{{time_limit_min}}" - name: "CONFIG_whisk_timeLimit_max" value: "{{time_limit_max}}" - name: "CONFIG_whisk_timeLimit_std" value: "{{time_limit_std}}" - name: "CONFIG_whisk_memory_min" value: "{{memory_limit_min}}" - name: "CONFIG_whisk_memory_max" value: "{{memory_limit_max}}" - name: "CONFIG_whisk_memory_std" value: "{{memory_limit_std}}" - name: "CONFIG_whisk_concurrencyLimit_min" value: "{{concurrency_limit_min}}" - name: "CONFIG_whisk_concurrencyLimit_max" value: "{{concurrency_limit_max}}" - name: "CONFIG_whisk_concurrencyLimit_std" value: "{{concurrency_limit_std}}" - name: "CONFIG_whisk_logLimit_min" value: "0m" - name: "CONFIG_whisk_logLimit_max" value: "10m" - name: "CONFIG_whisk_logLimit_std" value: "10m" - name: "CONFIG_whisk_activation_payload_max" value: "{{activation_payload_max}}" - name: "CONFIG_whisk_loadbalancer_blackboxFraction" value: "{{loadbalancer_blackbox_fraction}}" - name: "CONFIG_whisk_loadbalancer_timeoutFactor" value: "{{loadbalancer_timeout_factor}}" # Default to empty logs dir. This is because logs should go to stdout - name: "WHISK_LOGS_DIR" value: "" # this version is the day it is deployed, #- name: "CONFIG_whisk_info_date" # valueFrom: # configMapKeyRef: # name: openwhisk-whisk.config # key: whisk_info_date # properties for DB connection # TODO to be fixed in community edition 1st # properties for DB connection #- name: "CONFIG_whisk_couchdb_username" # valueFrom: # secretKeyRef: # name: couchdb-auth # key: db_username #- name: "CONFIG_whisk_couchdb_password" # valueFrom: # secretKeyRef: # name: couchdb-auth # key: db_password - name: "CONFIG_whisk_couchdb_username" value: "{{couchdb_admin_user}}" - name: "CONFIG_whisk_couchdb_password" value: "{{couchdb_admin_password}}" - name: "CONFIG_whisk_couchdb_port" value: "{{couchdb_port}}" - name: "CONFIG_whisk_couchdb_protocol" value: "http" - name: "CONFIG_whisk_couchdb_host" value: "{{couchdb_host}}" - name: "CONFIG_whisk_couchdb_provider" value: "CouchDB" - name: "CONFIG_whisk_couchdb_databases_WhiskActivation" value: "nuvolaris_activations" - name: "CONFIG_whisk_couchdb_databases_WhiskEntity" value: "nuvolaris_whisks" - name: "CONFIG_whisk_couchdb_databases_WhiskAuth" value: "nuvolaris_subjects" - name: "CONFIG_whisk_couchdb_invoker_username" value: "{{couchdb_invoker_user}}" - name: "CONFIG_whisk_couchdb_invoker_password" value: "{{couchdb_invoker_password}}" # properties for kafka connection - name: "KAFKA_HOSTS" value: "{{kafka_host}}" - name: "CONFIG_whisk_kafka_replicationFactor" value: "" - name: "CONFIG_whisk_kafka_topics_prefix" value: "" - name: "CONFIG_whisk_kafka_topics_cacheInvalidation_retentionBytes" value: "" - name: "CONFIG_whisk_kafka_topics_cacheInvalidation_retentionMs" value: "" - name: "CONFIG_whisk_kafka_topics_cacheInvalidation_segmentBytes" value: "" - name: "CONFIG_whisk_kafka_topics_completed_retentionBytes" value: "" - name: "CONFIG_whisk_kafka_topics_completed_retentionMs" value: "" - name: "CONFIG_whisk_kafka_topics_completed_segmentBytes" value: "" - name: "CONFIG_whisk_kafka_topics_events_retentionBytes" value: "" - name: "CONFIG_whisk_kafka_topics_events_retentionMs" value: "" - name: "CONFIG_whisk_kafka_topics_events_segmentBytes" value: "" - name: "CONFIG_whisk_kafka_topics_health_retentionBytes" value: "" - name: "CONFIG_whisk_kafka_topics_health_retentionMs" value: "" - name: "CONFIG_whisk_kafka_topics_health_segmentBytes" value: "" - name: "CONFIG_whisk_kafka_topics_invoker_retentionBytes" value: "" - name: "CONFIG_whisk_kafka_topics_invoker_retentionMs" value: "" - name: "CONFIG_whisk_kafka_topics_invoker_segmentBytes" value: "" - name: "CONFIG_whisk_kafka_topics_scheduler_retentionBytes" value: "" - name: "CONFIG_whisk_kafka_topics_scheduler_retentionMs" value: "" - name: "CONFIG_whisk_kafka_topics_scheduler_segmentBytes" value: "" - name: "CONFIG_whisk_kafka_topics_creationAck_retentionBytes" value: "" - name: "CONFIG_whisk_kafka_topics_creationAck_retentionMs" value: "" - name: "CONFIG_whisk_kafka_topics_creationAck_segmentBytes" value: "" # properties for zookeeper connection - name: "ZOOKEEPER_HOSTS" value: "{{zookeeper_url}}" - name: "CONFIG_logback_log_level" value: "{{invoker_logging_level}}" - name: "CONFIG_akka_coordinatedShutdown_phases_actorSystemTerminate_timeout" value: "30 s" - name: "CONFIG_whisk_runtime_delete_timeout" value: "30 seconds" # apparently this is needed for the invoker - name: "CONFIG_whisk_helm_release" value: "helm_nuvolaris" # kubernetes - name: "CONFIG_whisk_kubernetes_timeouts_run" value: "{{kubernetes_timeouts_run}} minute" - name: "CONFIG_whisk_kubernetes_timeouts_logs" value: "{{kubernetes_timeouts_logs}} minute" - name: "CONFIG_whisk_kubernetes_portForwardingEnabled" value: "{{kubernetes_port_forwarding_enabled}}" - name: "CONFIG_whisk_kubernetes_actionNamespace" value: "{{kubernetes_action_namespace}}" - name: "CONFIG_whisk_kubernetes_userPodNodeAffinity_enabled" value: "{{kubernetes_user_pod_affinity_enabled}}" - name: "CONFIG_whisk_kubernetes_userPodNodeAffinity_key" value: "{{kubernetes_user_pod_affinity_key}}" - name: "CONFIG_whisk_kubernetes_userPodNodeAffinity_value" value: "{{kubernetes_user_pod_affinity_value}}" ports: - name: invoker containerPort: {{invoker_port}}