Skip to content

Harvester

Handson-peng edited this page Sep 2, 2020 · 9 revisions

Deployment

We highly recommend you use helm to deploy.

Deploy by helm

git clone https://github.com/PanDAWMS/helm-k8s.git

cd helm-k8s/harvester/harvester-helm

vim panda-queueconfig.json

set up your panda queue config or you may just overwrite it by cp you config json.

put submitter config file you need into directory submitter-config

put proxy file you need into directory secret

vim values.yaml

set up all parameter in values.yaml

helm install . --name <release name>

Helm will create harvester container, configmaps and secrets by a prefix name as your "release name"

You can edit queue configuration and proxy/submitter-config by kubectl

kubectl create configmap <release name>-panda-queue --from-file <queue config file> -o yaml --dry-run=client | kubectl replace -f -

kubectl create configmap <release name>-submitter-config --from-file <submitter config file> -o yaml --dry-run=client | kubectl replace -f -

kubectl create secret generic <release name>-submitter-proxy --from-file=<proxy file>  -o yaml --dry-run=client | kubectl replace -f -

The Queue configuration and proxy file will be under directory /usr/etc/panda/

Deploy by kubectl(Kubernetes)

If you are very familiar with Kubernetes you may modify some yaml files you need.

git clone https://github.com/PanDAWMS/helm-k8s.git

cd helm-k8s/harvester/kubernetes

set up clusterIP and MYSQL_PASSWORDin mariadb.yaml #note clusterIP should be under subnet.

set up FIXME part in panda-harvester.yaml

set up Queue configuration in panda-queue.yaml

set up replicas and nameservers in deployment-harvester.yaml

kubectl apply -f . 

input proxy secret by kubectl

 kubectl create secret generic proxy-file --from-file=<proxy file>  -o yaml --dry-run | kubectl replace -f -

Submitter configuration

use following command to input submitter configuration

kubectl create configmap submitter-config --from-file <submitter configure> -o yaml --dry-run | kubectl replace -f -

submitter configuration could be file or directory.

The file will be under directory /usr/etc/panda/

Maintenance

How to access harvester container/pod

use following command to list all pods

kubectl get pods

The pods named "release name"-harvester-<0,1,2,3...> are harvester pods.

Ex: if your release name of helm is atlas, the pod names will be atlas-harvester-0, atlas-harvester-1, atlas-harvester-2...

use following command to access the pod/container.

kubectl exec -it <pod name> -- /bin/sh

How to edit config

use following command to list all configmaps

kubectl get configmaps

panda-common is panda_common.cfg

panda-harvester is panda_harvester.cfg

panda-queue is panda_queueconfig.json

You can use

kubectl edit configmaps <configmaps name>

to edit the config. Or you can use

kubectl create configmap <configmaps name> --from-file <config file> -o yaml --dry-run | kubectl replace -f -

to replace old config. And reload config by command

kubectl exec -it <pod name> -- /usr/etc/rc.d/init.d/panda_harvester-uwsgi reload