lakefs hooks 试用

lakefs 的hooks 是一种比较灵活的能力,我们基于此可以实现数据的加工处理,同时也算是一种弥补lakefs
s3 事件的处理

环境准备

  • docker-compose
 
version: '3'
services:
  lakefs:
    image: "treeverse/lakefs:${VERSION:-latest}"
    ports:
      - "8000:8000"
    depends_on:
      - "postgres"
    environment:
      - LAKEFS_AUTH_ENCRYPT_SECRET_KEY=${LAKEFS_AUTH_ENCRYPT_SECRET_KEY:-some random secret string}
      - LAKEFS_DATABASE_CONNECTION_STRING=${LAKEFS_DATABASE_CONNECTION_STRING:-postgres://lakefs:lakefs@postgres/postgres?sslmode=disable}
      - LAKEFS_BLOCKSTORE_TYPE=${LAKEFS_BLOCKSTORE_TYPE:-local}
      - LAKEFS_BLOCKSTORE_LOCAL_PATH=${LAKEFS_BLOCKSTORE_LOCAL_PATH:-/home/lakefs}
      - LAKEFS_GATEWAYS_S3_DOMAIN_NAME=${LAKEFS_GATEWAYS_S3_DOMAIN_NAME:-s3.local.lakefs.io:8000}
      - LAKEFS_BLOCKSTORE_S3_CREDENTIALS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
      - LAKEFS_BLOCKSTORE_S3_CREDENTIALS_ACCESS_SECRET_KEY=${AWS_SECRET_ACCESS_KEY:-}
      - LAKEFS_LOGGING_LEVEL=${LAKEFS_LOGGING_LEVEL:-INFO}
      - LAKEFS_STATS_ENABLED
      - LAKEFS_BLOCKSTORE_S3_ENDPOINT
      - LAKEFS_BLOCKSTORE_S3_FORCE_PATH_STYLE
      - LAKEFS_COMMITTED_LOCAL_CACHE_DIR=${LAKEFS_COMMITTED_LOCAL_CACHE_DIR:-/home/lakefs/.local_tier}
    entrypoint:
      [
        "/app/wait-for",
        "postgres:5432",
        "--",
        "/app/lakefs",
        "run"
      ]
  postgres:
    image: "postgres:${PG_VERSION:-11}"
    command: "-c log_min_messages=FATAL"
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: lakefs
      POSTGRES_PASSWORD: lakefs
    logging:
      driver: none
  dremio:
    build: ./
    ports:
      - "9047:9047"
      - "31010:31010"
      - "8849:8849"
  s3:
    image: minio/minio
    environment:
      - "MINIO_ACCESS_KEY=minio"
      - "MINIO_SECRET_KEY=minio123"
    command: server /data --console-address ":9001"
    ports:
      - "9000:9000"
      - "9001:9001"
  • 初始化&准备
    这个比较简单,参考官方文档或者我以前写的

配置hooks

  • 创建文件夹(在lakefs 的repo中)
    lakfes 的hooks 是基于前缀的,而且需要配置放到特定的目录(_lakefs_actions)
    效果

 

 

  • 创建hooks
    就是一个yaml文件,同时官方代码中也提供了不少demo
    以前hooks 是在pre-merge 阶段执行的,而且是特性的main分支
 
name: Good files check
description: set of checks to verify that branch is good
on:
  pre-commit:
  pre-merge:
    branches:
      - main
hooks:
  - id: no_temp
    type: webhook
    description: checking no temporary files found
    properties:
      url: "https://your.domain.io/webhook?notmp=true?t=1za2PbkZK1bd4prMuTDr6BeEQwWYcX2R"
  - id: no_freeze
    type: webhook
    description: check production is not in dev freeze
    properties:
      url: "https://your.domain.io/webhook?nofreeze=true?t=1za2PbkZK1bd4prMuTDr6BeEQwWYcX2R"
 

官方demo

 

 

  • 触发hooks
    创建一个分支,上传一些文件,然后合并main
    注意执行不会成功,因为接口地址是不通的,对于异常的话,lakefs 直接会提示异常,同时合并操作是不会成功的(原子操作)

 

 

说明

目前官方提供了两种模式的hooks,webhook 以及airflow (都是比较好用的),同时也提供了接口可以查看hooks 的结果
利用好hooks 能解决不少我们的问题,很强大的功能

参考资料

https://docs.lakefs.io/setup/hooks.html

posted on   荣锋亮  阅读(59)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-02-12 几个开源的clickstream 分析工具
2021-02-12 partiql 学习一 试用
2021-02-12 partiql 亚马逊开源的基于sql 的查询语言
2021-02-12 cube.js 最新版本的一些特性
2021-02-12 astronomer 企业级的airflow 框架
2021-02-12 neodash 构建neo4j dashboard 的工具
2020-02-12 pgspider griddb fdw +plv8 集成使用

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示