混合云管道的未来:集成 MinIO、Tailscale 和 GitHub Actions

数据处理是现代软件开发的基本实践。它使团队能够自动收集、处理和存储数据,确保高质量的数据和高效的处理。

在本文中,我们将探讨如何建立一个全面的数据处理管道,重点介绍如何使用 Tailscale GitHub Action 进行安全网络。此设置还将包含 GitHub Actions 工作流和 MinIO Python SDK。虽然主要重点是展示 Tailscale 操作,但我们还将利用“动态 ETL 管道”文章中的 hydrate.py 脚本来有效地收集、处理和组织来自 Web 源的数据,确保 MinIO 中的安全存储和 Weaviation 中的有效索引。

Tailscale 改变了游戏规则,使用户能够从 GitHub Actions 工作流程轻松连接到他们的混合云 VPN。Action Marketplace 上提供的 Tailscale GitHub 操作极大地简化了此过程。

这个看似无害的步骤对开发人员和工程师具有重大影响。它基本上消除了出于开发目的而需要类似 Jenkins 的基础设施。通过利用 GitHub Actions 工作流,我们可以直接在存储库中创建和构建作业工作流,而不受 GitHub Runner 或自托管运行器的硬件和限制的限制。这种出色的设置将安全性、可扩展性和灵活性提升到一个新的水平,将您的软件开发工作流程提升到新的高度。

拥抱现代数据处理管道的强大功能

数据处理管道对于自动化数据管理的收集、处理和存储阶段至关重要,可确保高效处理和高质量数据。然而,随着项目的复杂性和规模的增长,与管理这些管道相关的挑战也在增加。安全性、数据处理和网络效率是开发人员当今面临的首要问题之一。

Tailscale 的安全范式转变

Tailscale 通过创建零信任网络环境彻底改变了网络安全。它使用 WireGuard 协议对设备之间的所有通信进行加密,确保只有授权用户和设备才能访问您的网络。这在数据处理管道中尤为重要,因为在管道中,敏感数据和代码在系统之间不断传输。

通过无缝网络集成提高效率

数据处理管道中最大的瓶颈之一是网络延迟和配置复杂性。Tailscale 通过创建一个无缝网络来解决这个问题,该网络将您的所有设备和服务连接起来,就好像它们在同一个本地网络上一样。这允许 GitHub Actions 运行器和 MinIO 存储之间更快、更可靠的通信。

MinIO对象存储的可扩展性

MinIO 提供与 S3 兼容的对象存储,可根据您的数据需求轻松扩展。随着项目的发展,数据处理管道生成和处理的数据量呈指数级增长。MinIO 的高性能对象存储可确保高效可靠地处理这些数据,使其成为现代数据处理工作流程的理想解决方案。

MinIO 的可扩展性不仅仅是处理大量数据;它还与各种工具和服务无缝集成。无论您是存储构建工件、日志还是其他生成的数据,MinIO 的分布式架构都能确保高可用性和持久性。

统一方法:GitHub Actions、Tailscale 和 MinIO

数据处理是现代软件开发的基本实践。它使团队能够自动收集、处理和存储数据,确保高质量的数据和高效的处理。在本文中,我们将探讨如何使用 GitHub Actions、用于对象存储的 MinIO 和用于安全网络的 Tailscale GitHub Action 来设置数据处理管道。我们还将利用“动态 ETL 管道”文章中的 hydrate.py 脚本来有效地收集、处理和组织来自 Web 源的数据,同时将其安全地存储在 MinIO 中并在 Weaviation 中索引。

这种出色的设置将安全性、可扩展性和灵活性提升到一个新的水平,将您的软件开发工作流程提升到新的高度。

先决条件

在开始之前,请确保满足以下先决条件:

1 . MinIO Server:在本地或云环境中安装和访问。

2 . 尾鳞网络:配置了活动帐户和访问密钥。

3 . GitHub 存储库:使用必要的访问权限进行设置。

4 . Python 环境:安装 MinIO SDK 以与 MinIO 服务器交互。

5 . GitHub 机密:安全存储 MinIO 凭据和 Tailscale 密钥。

数据处理管道的存储库结构

若要保持项目井井有条,请考虑以下存储库结构:

.
├── .github
│   ├── workflows
│   │   └── hydrate-ts-workflow.yml
│   └── scripts
│       └── hydrate.py
├── urls.txt
└── README.md
  • .github/workflows:用于存储 GitHub Actions 工作流文件的目录

  • .github/scripts:用于存储工作流中使用的脚本的目录,例如 hydrate.py

  • urls.txt:包含要由 hydrate.py 脚本处理的 URL 列表的文件

  • README.md:项目的文档,包括贡献者的说明

使用 GitHub Actions 配置数据处理管道

将 GitHub Actions 与 MinIO 和 Tailscale 集成以增强数据处理管道

拥有强大而安全的数据处理管道至关重要,但如果我们告诉您,通过将 GitHub Actions 与 Tailscale 的安全网络和 MinIO 的高性能存储解决方案集成,您可以将管道提升到一个新的水平呢?在本文中,我们将引导您完成设置数据处理管道的步骤,该管道不仅利用 GitHub Actions 的强大功能,还确保一流的安全性和高效的数据处理。

第 1 步:使用 OAuth 和 Tailscale 进行无缝身份验证

首先,让我们谈谈身份验证。我们将使用 OAuth 和 Tailscale 来确保安全、基于令牌的凭据管理。通过在 Tailscale 的管理面板中设置 OAuth 客户端,我们使 GitHub Actions 能够无缝进行身份验证。此步骤可确保我们网络内的所有通信都受到 Tailscale 加密通道的保护,从而确保我们的数据安全无虞。

要在 Tailscale 中创建 OAuth 客户端,请按照下列步骤操作:

1 . 登录到 Tailscale 管理面板。

2 . 导航到“OAuth 客户端”部分。

3 . 单击“新建 OAuth 客户端”,然后为您的客户端提供一个名称。

4 . 设置 CI/CD 管道所需的相应权限和范围。

5 . 生成 OAuth 客户端 ID 和机密,您将在后续步骤中使用。

第 2 步:使用 Tailscale 的 ACL 强制执行精确访问

接下来,我们将深入探讨如何在 Tailscale 中配置访问控制列表 (ACL)。这就是我们定义和限制网络不同部分如何交互的地方。通过精心设计 ACL 规则,我们确保我们的 GitHub Actions 运行程序只能访问它需要的资源,从而防止对我们网络的敏感区域进行任何未经授权的访问。

下面是 ACL 配置的示例:

{"groups": {"group:dev": ["$github_user_email", "$admin_user_email",],},"acls": [{"action": "accept","src": ["tag:ci"],"dst": ["tag:infra:*"]}],"tagOwners": {"tag:ci": ["group:dev"],"tag:infra": ["group:dev"]}
}

在此示例中,我们定义了一个 ACL 规则,该规则允许从标记为 “ ci ” 的设备到标记为 “ infra ” 的设备上的任何服务的流量。该 tagOwners 部分指定哪些用户可以分配这些标记,以保持对配置的控制。

步骤 3:使用 GitHub Secrets 安全管理敏感数据

现在,让我们谈谈如何安全地管理敏感信息。GitHub Secrets 来救援!我们将 oauth-client-id 和 oauth-secret 存储为 GitHub 机密,这些机密是加密的,只有在工作流执行期间 GitHub Actions 才能访问。

要设置 GitHub 机密,请执行以下操作:

1 . 转到 GitHub 存储库的设置。

2 . 导航到“机密”部分。

3 . 单击“新建存储库密钥”,然后为您的密钥提供一个名称(e.g., TS_OAUTH_CLIENT_ID, TS_OAUTH_SECRET)。

4 . 输入 Tailscale OAuth 客户端 ID 和密钥的相应值。

然后,您可以在 GitHub Actions 工作流文件中引用这些机密,下面是如何将 Tailscale 的 GitHub Action 集成到工作流中的示例:


steps:- name: Setup Tailscaleuses: tailscale/github-action@v2with:oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}  oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}tags: tag:ci

在此示例中,我们使用“tailscale/github-action”在工作流中设置 Tailscale。我们使用之前创建的 GitHub 机密提供 OAuth 客户端 ID 和机密。“tags”参数指定分配给 GitHub Actions 运行器的标记,该运行器根据我们定义的 ACL 规则确定其在 Tailscale 网络中的访问级别。

第 4 步:故障排除和持续改进

没有一种设置是完美的,可能会出现挑战。但不要害怕!通过预测 OAuth 身份验证错误或 ACL 错误配置等常见问题,我们可以快速解决这些问题,而不会造成重大停机时间。以下是 Tailscale 和 MinIO 集成的一些故障排除提示:

尾秤故障排除提示:

1 . 仔细检查 OAuth 凭据:确保正确输入 OAuth 客户端 ID 和密码,没有任何拼写错误或复制粘贴错误。准确的凭据对于成功进行身份验证至关重要。有关更多详细信息,请访问 Tailscale OAuth 故障排除指南。

2 . 验证 ACL 规则:确保正确定义访问控制列表 (ACL) 规则,并与 GitHub Actions 工作流中使用的标签匹配。ACL 中的错误配置可能会导致权限问题。确保在 ACL 中分配给设备的标签在 GitHub Actions 设置中正确引用。从 Tailscale 的 ACL 文档中了解更多信息。

3 . 检查 OAuth 作用域和权限:如果遇到权限问题,请验证您的 OAuth 客户端是否在 Tailscale 中具有必要的作用域和权限。这可确保客户端可以在尾网中执行所需的操作。有关详细信息,请参阅 Tailscale GitHub 操作指南。

4 . 使用临时身份验证密钥:为避免与特定于计算机的密钥发生冲突,尤其是当 GitHub Actions 的多个实例可能同时运行时,请使用临时身份验证密钥。这些键允许 Tailscale 管理临时节点,并在它们离线时自动清理它们。在 Tailscale 的临时密钥文档中相关信息。

5 . 监控网络状态:使用“尾部状态”和“尾部 ping”等 Tailscale 命令检查流量是否正确路由并诊断连接问题。这些命令有助于确定流量是通过直接路径还是通过中继服务器 (DERP)。查看 Tailscale CLI 文档。

MinIO 故障排除提示:

1 . 检查访问权限:确保访问密钥和私有密钥配置正确,并具有要执行的操作所需的权限。尝试在 S3 兼容工具中复制或粘贴对象时,权限配置错误可能会导致“拒绝访问”错误。详细的故障排除步骤可以在 MinIO 的 GitHub 讨论中找到。

2 . 验证 TLS 证书:如果在使用 TLS 证书时无法访问分布式模式下的 MinIO,请验证证书是否已正确安装和配置。TLS 证书问题可能会阻止对 MinIO 服务的正确访问。请参阅 MinIO 的 TLS 配置指南。

3 . 监控和重启服务:使用 MinIO 的运行状况检查和监控工具来密切关注服务器的状态。如果遇到问题,通过 MinIO 控制台重新启动服务或使用“mc admin service restart”等命令可以解决暂时性问题。在 MinIO 的官方文档中了解有关 MinIO 服务管理的更多信息。

4 . 解决端口冲突:如果 MinIO 服务由于端口冲突而无法启动,请识别并解决可能保留所需端口的任何进程。这可能涉及停止冲突的服务或重新配置 MinIO 以使用不同的端口。有关更多详细信息,请访问 MinIO 故障排除指南。

5 . 验证文件权限:确保 MinIO 二进制文件、配置文件和数据目录具有正确的文件权限。权限配置错误可能会阻止 MinIO 正常启动或运行。MinIO 二进制文件通常应具有 root 权限,而数据目录应归 MinIO 服务用户所有。MinIO 文件权限指南中提供了详细步骤。

通过将这些故障排除提示整合到管道文档中,您可以快速处理和解决常见问题,确保数据处理工作流平稳高效地运行。

使用 GitHub Actions、MinIO 和 Tailscale 集成和调度数据处理管道

为了深入了解使用 GitHub Actions 集成数据处理管道的细节,并通过 Tailscale 的安全连接和 MinIO 强大的数据处理功能得到增强,以下 YAML 文件演示了我们如何通过工作流程自动处理和记录 URL 数据。

工作流配置概述

我们的数据处理工作流在 YAML 文件中定义,由推送到主分支的事件、手动触发器和计划事件触发。此设置可确保每当更改按指定计划推送到主分支或手动触发时,我们的管道都会自动运行。下面,我们概述了工作流配置的关键组件:


name: Process and Log URL Dataon:push:branches:- mainschedule:- cron: '0 0 * * *'  # Runs at midnight UTC every dayworkflow_dispatch:jobs:hydrate-minio-weaviate:runs-on: ubuntu-lateststeps:- name: Checkout repositoryuses: actions/checkout@v2- name: Set up Pythonuses: actions/setup-python@v2with:python-version: '3.8'- name: Install Python dependenciesrun: |python -m pip install --upgrade pippip install requests minio weaviate-client pydantic unstructured python-dotenv- name: Load environment variablesrun: |echo "MINIO_ACCESS_KEY=${{ secrets.MINIO_ACCESS_KEY }}" >> $GITHUB_ENVecho "MINIO_SECRET_KEY=${{ secrets.MINIO_SECRET_KEY }}" >> $GITHUB_ENVecho "WEAVIATE_ENDPOINT=${{ secrets.WEAVIATE_ENDPOINT }}" >> $GITHUB_ENV- name: Setup Tailscaleuses: tailscale/github-action@v2with:oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}tags: tag:ci- name: Run Hydrate Scriptrun: |python ./hydrate/hydrate.py ./hydrate/urls.txt cda-datasets process_log.txtshell: bash- name: Upload Process Log as Artifactuses: actions/upload-artifact@v2with:name: processed-urls-logpath: process_log.txt

关键工作流程步骤说明:

1 . 签出存储库:此步骤从 GitHub 存储库中签出代码,确保在工作流中使用最新版本。

2 . 设置 Python:我们将工作流配置为使用 Python 3.8,为脚本执行准备环境。

3 . 安装 Python 依赖项:安装了 requests、minio、weaviate-client、pydantic、unstructured 和 python-dotenv 等基本库。这些是运行处理 URL 并与 MinIO 和 Weaviation 交互的 hydrate.py 脚本所必需的。

4 . 加载环境变量:在这里,我们从 GitHub Secrets 安全地加载环境变量,例如 MinIO 访问密钥和 Weaviate 端点,这对于安全高效地访问外部资源至关重要。

5 . 设置 Tailscale:Tailscale GitHub 操作用于设置安全连接。此步骤对于维护安全管道、利用 OAuth 进行身份验证以及确保工作流在安全的网络环境中运行至关重要。

6 . 运行 Hydrate 脚本:此命令使用指定参数执行 hydrate.py 脚本,处理来自 urls.txt 的数据并通过 MinIO 和 Weaviate 进行处理。

7 . 将流程日志作为工件上传:最后,将流程日志作为工件上传到 GitHub,以便轻松访问和查看工作流生成的输出。

触发和调度工作流

为了确保数据处理管道在适当的时间运行,我们使用了各种触发器:

1 . 推送事件:每当将更改推送到指定分支时,都会自动触发工作流,确保数据处理以最新更新运行。

2 . 计划事件:使用 cron 语法将工作流计划为按特定时间间隔运行,例如每天午夜 UTC,从而允许定期处理数据。

3 . 手动触发器:允许使用 workflow_dispatch 事件从 GitHub 界面手动触发工作流,从而为临时数据处理需求提供灵活性。

通过将这些步骤集成到我们的 GitHub Actions 工作流程中,我们创建了一个强大、安全且高效的数据处理管道,可自动收集、处理和存储数据。这种配置不仅确保了高质量的数据处理,而且还利用了用于对象存储的 MinIO 和 Tailscale 用于安全网络的高级功能。通过此设置,您的团队可以实现更快、更可靠的数据处理,满足现代开发标准。

提升您的数据处理管道

将 GitHub Actions 与 Tailscale 和 MinIO 集成可以显著提高数据处理管道的安全性、效率和可扩展性。本文展示了如何结合这些工具创建统一的方法,确保强大可靠的数据工作流程准备好应对未来的挑战。通过利用 Tailscale 的安全网络和 MinIO 的可扩展对象存储,您可以简化流程,实现更快、更安全的数据管理。采用这种强大的集成,将您的数据处理能力提升到新的高度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

植物大战僵尸杂交版手机下载与安装全攻略

植物大战僵尸杂交版是一款深受玩家喜爱的策略冒险游戏,以其丰富的植物种类、多样的关卡设计和趣味的玩法著称。本文将为您提供详细的下载与安装教程,帮助您快速上手,享受游戏带来的乐趣。 游戏简介 植物大战僵尸杂交版在传统玩法的基础上&a…

【机器学习】语音转文字 - FunASR 的应用与实践(speech to text)

本文将介绍 FunASR,一个多功能语音识别模型,包括其特点、使用方法以及在实际应用中的表现。我们将通过一个简单的示例来展示如何使用 FunASR 将语音转换为文字,并探讨其在语音识别领域的应用前景。 一、引言 随着人工智能技术的不断发展&am…

linux的安全技术和防火墙

一、安全技术 1.入侵检测系统:特点式不阻断网络访问,主要式提供报警和事后监督,不主动介入,默默的看着你(相当于360安全卫士) 2.入侵防御系统:透明模式工作,对数据包,网…

平价高性价比蓝牙耳机有哪些?盘点好用平价的蓝牙耳机推荐

在当今快节奏的生活中,蓝牙耳机已经成为人们日常生活中不可或缺的配件,它们不仅让我们可以在行走、工作或者锻炼时享受音乐,还提供了便利的通话功能。然而,市面上蓝牙耳机种类繁多,价格相差甚远,大家往往难…

走进开源企业 | 湖南大学OpenHarmony技术实训活动在开鸿智谷顺利举办!

6月24日-6月26日,2024开放原子校源行之湖南大学信息科学与工程学院师生走进开源企业实训交流活动顺利落下帷幕。湖南大学信息科学与工程学院的师生代表团一行90人参与了湖南开鸿智谷数字产业有限公司(以下简称“开鸿智谷”)与母公司拓维信息系…

HEC-HMS水文模型教程

原文链接:HEC-HMS水文模型教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247607904&idx5&sn1a210328a3fc8f941b433674d8fe2c85&chksmfa826787cdf5ee91d01b6981ebd89deac3e350d747d0fec45ce2ef75d7cb8009341c6f55114d&token90645021…

vue项目手机录音

手机实现录音功能&#xff0c;安卓和苹果都可。功能&#xff0c;点击开始录制录音后&#xff0c;随时可以停止录音&#xff0c;如果不点击停止最多录制15秒。 页面结构 <!--音频--> <div class"audio-box"><audio id"audioPlayer"controlsc…

修改element-ui日期下拉框datetimePicker的背景色样式

如图&#xff1a; 1、修改背景色 .el-date-picker.has-sidebar.has-time { background: #04308D; color: #fff; border: 1px solid #326AFF } .el-date-picker__header-label { color: #ffffff; } .el-date-table th { color: #fff; } .el-icon-d-arrow-left:before { color: …

Postgres14.4(Docker安装)

Postgres14.4&#xff08;Docker安装&#xff09; 一&#xff0c;Docker拉取镜像 docker pull postgres:14.4 #检查镜像是否拉取成功 docker images | grep postgres二&#xff0c;新建挂载目录&#xff0c;并运行容器 mkdir -p /data/postgre/data chmod 777 /data/postgre…

AQS同步队列、条件队列源码解析

AQS详解 前言AQS几个重要的内部属性字段内部类 Node同步队列 | 阻塞队列等待队列 | 条件队列 重要方法执行链同步队列的获取、阻塞、唤醒加锁代码流程解锁 条件队列的获取、阻塞、唤醒大体流程 调用await()方法1. 将节点加入到条件队列2. 完全释放独占锁3. 等待进入阻塞队列4. …

小程序安卓手机点击uni-data-select 下拉框选择器会出现蓝色阴影

解决方法&#xff1a;在导入的包中找到uni-data-select.vue&#xff0c;接着找到.uni-stat__select样式&#xff0c;把cursor: pointer去掉。 如果出现穿透问题&#xff0c;uni-select__selector的z-index加高&#xff0c;默认是2。

zdppy_api+vue3+antd开发前后端分离的预加载卡片实战案例

后端代码 import api import upload import timesave_dir "uploads"async def rand_content(request):key api.req.get_query(request, "key")time.sleep(0.3)return api.resp.success(f"{key} " * 100)app api.Api(routes[api.resp.get(&qu…

UnityUGUI之二 CameraTargetTexture

在我们需要将3D物体呈现在2D视角时就可以使用TargetTexture&#xff0c;若想只显示3D物体则需改变背景颜色&#xff0c;并且得再增加一个相机

智慧城市新利器:免费可视化工具助力高效管理

在智慧城市的建设中&#xff0c;实现高效的统筹管理是至关重要的。通过免费可视化工具“山海鲸可视化”&#xff0c;这一目标可以轻松达成。山海鲸可视化是一款免费可视化工具&#xff0c;具备二三维融合、易用性、安全性以及高质量画面渲染等特色&#xff0c;是制作智慧城市可…

数据结构—选择题

01-数据结构—判断题 71.在数据结构中&#xff0c;从逻辑上可以把数据结构分为&#xff08; &#xff09;。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 线性结构和非线性结构 D. 内部结构和外部结构 答案&#xff1a;C 72.当输入规模为n时&#xff0c;下列算法…

如何获得更高质量的回答-chatgpt

在与技术助手如ChatGPT进行交互时&#xff0c;提问的方式直接影响到你获得的答案质量。以下是几个关键的提问技巧&#xff0c;可以帮助你在与ChatGPT的互动中获得更有效的回答&#xff1a; 1. 清晰明了的问题 技巧&#xff1a;确保问题清晰明了&#xff0c;避免含糊不清或模糊的…

短信群发平台:验证码在不同行业的应用

1、手机号码真实性验证&#xff1a;用户注册会员时&#xff0c;为了获取用户真实的手机号码&#xff0c;需要通过手机短信验证功能&#xff0c;确保用户填写的手机号码的真实性。 2、用户找回密码&#xff1a;用户有可能会忘记掉自己的密码甚至用户名&#xff0c;如果该会员已…

Python自定义线程池,这么高效,是不是开了挂?

目录 1、线程池基础 🏗️ 1.1 线程池概念与优势 1.2 Python标准库concurrent.futures简介 示例代码:使用ThreadPoolExecutor执行简单任务 2、利用ThreadPoolExecutor定制 🎛️ 2.1 创建自定义线程池类 示例代码:自定义ThreadPoolExecutor子类 2.2 设置线程池参数与…

四.iOS核心动画 - 图层的视觉效果

引言 在前几篇博客中我们讨论了图层的frame,bounds,position以及让图层加载图片。但是图层事实上不仅可以显示图片&#xff0c;或者规则的矩形块&#xff0c;它还有一系列内建的特性来创建美丽优雅的页面元素。在这篇博客中我们就来探索一下CALayer的视觉效果。 视觉效果 图…

转化分析|一位数据分析师的实验田复盘

花3个月时间&#xff0c;吭哧吭哧写了80页草稿的《投资——1. 知己知彼》&#xff0c;发布之前豪言壮语“2000阅读量”&#xff0c;到现在累计72&#xff0c;真是piapia打脸&#xff01;心态那个崩啊&#xff01;&#xff01; 朋友们吐槽内容太长、定位不明确、分析深度不够&am…