在sdap中接收数据的助手
sdap-ingest-manager的Python项目详细描述
用于接收数据集的SDAP管理器
先决条件
python 3
为python3安装anaconda。从图形安装(例如macos):
https://www.anaconda.com/distribution/#macos
git lfs(用于开发)
Git lfs有关Git部署的信息,请参见https://git-lfs.github.com/
如果不可用,您必须获取netcdf文件进行测试,如果您确实需要测试。在
在kubernetes集群上部署nexus
见项目https://github.com/apache/incubator-sdap-nexus
$ helm install nexus . --namespace=sdap --dependency-update -f ~/overridden-nexus-values.yml
安装、配置和运行
安装
保持以用户身份登录
^{pr2}$配置摄取系统
捕获安装输出结尾处的消息
--------------------------------------------------------------
Now, create configuration files in
***/<some path>>/.sdap_ingest_manager***
Use templates and examples provided there
--------------------------------------------------------------
如果路径未显示在安装标准输出中,可以使用以下命令找到它:
python -c "import sys; print(f'{sys.prefix}/.sdap_ingest_manager')"
使用消息中显示的路径并创建您自己的配置文件:
$ cd /<some path>>/.sdap_ingest_manager
$ cp sdap_ingest_manager.ini.default sdap_ingest_manager.ini
按照注释中的说明编辑和更新新创建的文件。在
{{cd2>如果文件中的值是配置的,那么这个值将被使用。因此,您可以有一个简化的.ini
文件,其中只包含您的特定配置。
不要将您的特定配置放在.ini.default
文件中,它将在您升级包时被替换。在
简化的.ini
文件示例:
[COLLECTIONS_YAML_CONFIG]yaml_file = collections.yml[OPTIONS]# set to False to actually call the ingestion command for each granuledry_run = False# set to True to automatically list the granules as seen on the nfs server when they are mounted on the local file system.deconstruct_nfs = True# number of parallel ingestion pods on kubernetes (1 per granule)parallel_pods = 2[INGEST]# kubernetes namespace where the sdap cluster is deployedkubernetes_namespace = nexus-dev
配置集合
您可以在sdap_ingest_manager.ini
文件中引用的本地yaml文件中配置它。在
它也可以在谷歌电子表格中。在
如果两者都配置,则将使用本地yaml文件。在
运行摄入
在已配置集合的列表中:
$ run_collections
并行作业的数量可以在sdap_ingest_manager.ini
文件中更新。在
如果中断(终止),进程将在原来的位置重新启动。在
对于开发者
部署项目
$ bash
$ git clone ...
$ cd sdap_ingest_manager
$ python -m venv venv
$ source ./venv/bin/activate
$ pip install .
注意命令pip install-e。不工作,因为它不部署配置文件。在
更新项目
用你最喜欢的IDE(例如pyCharm)更新代码和测试。在
测试并创建包
推送时,基于dev分支的包将在github版本中自动发布。在
更改文件中的版本设置.py在
$ python setup.py test
$ git tag <version>
$ git push origin <version>
发布将通过github操作自动推送到pypi。在
集装箱化
码头工人
(开发版)
cd containers/docker
docker build --no-cache --tag tloubrieu/sdap-ingest-manager:latest .
docker run -it --name sdap-ingest-manager -v sdap_ingest_config:/usr/local/.sdap_ingest_manager tloubrieu/sdap-ingest-manager:latest
docker volume inspect sdap_ingest_config
您可以在命名卷的目录中看到配置文件(例如/var/lib/docker/volumes/sdap_insert_config/\u data)。在
注意:在macos上,要访问这个目录,您需要进入运行docker服务的虚拟机。要更新macos上的配置:
docker run --rm -it -v /:/vm-root alpine:edge /bin/ash
cd /vm-root/var/lib/docker/volumes/sdap_ingest_config/_data
cp sdap_ingest_manager.ini.default sdap_ingest_manager.ini
vi sdap_ingest_manager.ini
要在dockerhub do上发布docker映像(kubernetes部署所需的步骤):
docker login
docker push tloubrieu/sdap-ingest-manager:latest
库伯内特斯
为您的部署创建configMap
从现有本机配置文件准备配置映射:
kubectl create configmap collection-ingester-config --from-file=venv/.sdap_ingest_manager -n sdap
如果启动的配置映射不是所需的,则可以手动更新该配置映射:
kubectl get configmap collection-ingester-config -o yaml -n sdap > containers/kubernetes/sdap_ingester_config.yml
手动编辑yml文件以仅保留特定于部署的配置(如果与当前配置不同)
替换配置映射:
kubectl delete configmap collection-ingester-config -n sdap
kubectl apply -f containers/kubernetes/sdap_ingester_config.yml -n sdap
启动服务
kubectl apply -f containers/kubernetes/job.yml -n sdap
删除服务:
kubectl delete jobs --all -n sdap
- 项目
标签: