This project has retired. For details please refer to its Attic page.
Custom Configuation | Apache Submarine
Skip to main content
Version: master 🏃

Custom Configuation

Helm Chart Volume Type

Submarine can support various volume types, currently including hostPath (default) and NFS. It can be easily configured in the ./helm-charts/submarine/values.yaml, or you can override the default values in values.yaml by helm CLI.

hostPath

  • In hostPath, you can store data directly in your node.
  • Usage:
    1. Configure setting in ./helm-charts/submarine/values.yaml.
    2. To enable hostPath storage, set .storage.type to host.
    3. To set the root path for your storage, set .storage.host.root to <any-path>
  • Example:
    # ./helm-charts/submarine/values.yaml
    storage:
    type: host
    host:
    root: /tmp

NFS (Network File System)

  • In NFS, it allows multiple clients to access a shared space.
  • Prerequisite:
    1. A pre-existing NFS server. You have two options.
      1. Create NFS server
        kubectl create -f ./dev-support/nfs-server/nfs-server.yaml
        It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at 10.96.0.2
      2. Use your own NFS server
    2. Install NFS dependencies in your nodes
      • Ubuntu
        apt-get install -y nfs-common
      • CentOS
        yum install nfs-util
  • Usage:
    1. Configure setting in ./helm-charts/submarine/values.yaml.
    2. To enable NFS storage, set .storage.type to nfs.
    3. To set the ip for NFS server, set .storage.nfs.ip to <any-ip>
  • Example:
    # ./helm-charts/submarine/values.yaml
    storage:
    type: nfs
    nfs:
    ip: 10.96.0.2

Access to Submarine Server

Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5 uses Traefik as reverse-proxy by default. If you don't want to use Traefik, you can modify below value to false in ./helm-charts/submarine/values.yaml.

# Use Traefik by default
traefik:
enabled: true

To access the server from outside of the cluster, we use Traefik ingress controller and NodePort for external access.\ Please refer to ./helm-charts/submarine/charts/traefik/values.yaml and Traefik docs for more details if you want to customize the default value for Traefik.

Notice: If you use kind to run local Kubernetes cluster, please refer to this docs and set the configuration "extraPortMappings" when creating the k8s cluster.

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 32080
hostPort: [the port you want to access]
# Use nodePort and Traefik ingress controller by default.
# To access the submarine server, open the following URL in your browser.
http://127.0.0.1:32080

If minikube is installed, use the following command to find the URL to the Submarine server.

$ minikube service submarine-traefik --url

Kubernetes Dashboard (optional)

Deploy

To deploy Dashboard, execute the following command:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

Create RBAC

Run the following commands to grant the cluster access permission of dashboard:

kubectl create serviceaccount dashboard-admin-sa
kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa

Get access token (optional)

If you want to use the token to login the dashboard, run the following commands to get key:

kubectl get secrets
# select the right dashboard-admin-sa-token to describe the secret
kubectl describe secret dashboard-admin-sa-token-6nhkx

Start dashboard service

kubectl proxy

Now access Dashboard at:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

Dashboard screenshot: