setup/kubernetes/operator.yaml (71 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: apps/v1
kind: StatefulSet
metadata:
name: nuvolaris-operator
namespace: nuvolaris
spec:
replicas: 1
selector:
matchLabels:
name: nuvolaris-operator
template:
metadata:
labels:
name: nuvolaris-operator
app: nuvolaris-operator
annotations:
whisks.nuvolaris.org/annotate-version: "true"
spec:
serviceAccountName: nuvolaris-operator
restartPolicy: Always
affinity:
# prefer to not run on an invoker node (only prefer because of single node clusters)
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: nuvolaris-role
operator: NotIn
values:
- invoker
- weight: 80
preference:
matchExpressions:
- key: nuvolaris-role
operator: In
values:
- core
# Fault tolerance: prevent multiple instances of nuvolaris-operator from running on the same node
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: name
operator: In
values:
- nuvolaris-operator
topologyKey: "kubernetes.io/hostname"
tolerations:
- key: "nuvolaris-role"
operator: "Equal"
value: core
effect: "NoSchedule"
securityContext:
runAsUser: 1001
fsGroup: 1001
volumes:
- name: deploy
persistentVolumeClaim:
claimName: nuvolaris-operator-deploy-pvc
containers:
- name: nuvolaris-operator
image: ${IMAGES_OPERATOR}
imagePullPolicy: Always
command: ["./run.sh"]
args: ["--verbose"]
securityContext:
capabilities:
drop:
- ALL
volumeMounts:
- name: deploy
mountPath: "/home/nuvolaris/deploy"