blob: c857ff2cb80659b4c9090f4f09c45103e586fe4b [file] [log] [blame]
#
# 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.
#
kind: Pod
apiVersion: v1
metadata:
namespace: {{zeppelin.k8s.namespace}}
name: {{zeppelin.k8s.interpreter.pod.name}}
labels:
app: {{zeppelin.k8s.interpreter.pod.name}}
interpreterGroupId: {{zeppelin.k8s.interpreter.group.id}}
interpreterSettingName: {{zeppelin.k8s.interpreter.setting.name}}
{% if zeppelin.k8s.server.uid is defined %}
ownerReferences:
- apiVersion: v1
controller: false
blockOwnerDeletion: false
kind: Pod
name: {{zeppelin.k8s.server.pod.name}}
uid: {{zeppelin.k8s.server.uid}}
{% endif %}
spec:
{% if zeppelin.k8s.interpreter.group.name == "spark" %}
automountServiceAccountToken: true
{% else %}
automountServiceAccountToken: false
{% endif %}
restartPolicy: Never
terminationGracePeriodSeconds: 30
containers:
- name: {{zeppelin.k8s.interpreter.container.name}}
image: {{zeppelin.k8s.interpreter.container.image}}
command: ["sh", "-c", "$(ZEPPELIN_HOME)/bin/interpreter.sh -d $(ZEPPELIN_HOME)/interpreter/{{zeppelin.k8s.interpreter.group.name}} -r {{zeppelin.k8s.interpreter.rpc.portRange}} -c {{zeppelin.k8s.server.rpc.host}} -p {{zeppelin.k8s.server.rpc.portRange}} -i {{zeppelin.k8s.interpreter.group.id}} -l {{zeppelin.k8s.interpreter.localRepo}} -g {{zeppelin.k8s.interpreter.setting.name}}"]
lifecycle:
preStop:
exec:
# SIGTERM triggers a quick exit; gracefully terminate instead
command: ["sh", "-c", "ps -ef | grep org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer | grep -v grep | awk '{print $2}' | xargs kill"]
env:
{% for key, value in zeppelin.k8s.envs.items() %}
- name: {{key}}
value: {{value}}
{% endfor %}
{% if zeppelin.k8s.interpreter.group.name == "spark" %}
volumeMounts:
- name: spark-home
mountPath: /spark
initContainers:
- name: spark-home-init
image: {{zeppelin.k8s.spark.container.image}}
command: ["sh", "-c", "cp -r /opt/spark/* /spark/"]
volumeMounts:
- name: spark-home
mountPath: /spark
volumes:
- name: spark-home
emptyDir: {}
{% endif %}
---
kind: Service
apiVersion: v1
metadata:
namespace: {{zeppelin.k8s.namespace}}
name: {{zeppelin.k8s.interpreter.pod.name}} # keep Service name the same to Pod name.
{% if zeppelin.k8s.server.uid is defined %}
ownerReferences:
- apiVersion: v1
controller: false
blockOwnerDeletion: false
kind: Pod
name: {{zeppelin.k8s.server.pod.name}}
uid: {{zeppelin.k8s.server.uid}}
{% endif %}
spec:
clusterIP: None
ports:
- name: intp
port: 12321
{% if zeppelin.k8s.interpreter.group.name == "spark" %}
- name: spark-driver
port: 22321
- name: spark-blockmanager
port: 22322
- name: spark-ui
port: 4040
{% endif %}
selector:
app: {{zeppelin.k8s.interpreter.pod.name}}
{% if zeppelin.k8s.interpreter.group.name == "spark" %}
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{zeppelin.k8s.interpreter.pod.name}}
namespace: {{zeppelin.k8s.namespace}}
{% if zeppelin.k8s.server.uid is defined %}
ownerReferences:
- apiVersion: v1
controller: false
blockOwnerDeletion: false
kind: Pod
name: {{zeppelin.k8s.server.pod.name}}
uid: {{zeppelin.k8s.server.uid}}
{% endif %}
rules:
- apiGroups: [""]
resources: ["pods", "services"]
verbs: ["create", "get", "update", "list", "delete", "watch" ]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{zeppelin.k8s.interpreter.pod.name}}
{% if zeppelin.k8s.server.uid is defined %}
ownerReferences:
- apiVersion: v1
controller: false
blockOwnerDeletion: false
kind: Pod
name: {{zeppelin.k8s.server.pod.name}}
uid: {{zeppelin.k8s.server.uid}}
{% endif %}
subjects:
- kind: ServiceAccount
name: default
roleRef:
kind: Role
name: {{zeppelin.k8s.interpreter.pod.name}}
apiGroup: rbac.authorization.k8s.io
{% endif %}