| # |
| # 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 %} |