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

news2024/11/15 12:07:13

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

在本文中,我们将探讨如何建立一个全面的数据处理管道,重点介绍如何使用 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 Tailscale
    uses: tailscale/github-action@v2
    with:
      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 Data

on:
  push:
    branches:
      - main
  schedule:
    - cron: '0 0 * * *'  # Runs at midnight UTC every day
  workflow_dispatch:

jobs:
  hydrate-minio-weaviate:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.8'
      
      - name: Install Python dependencies
        run: |
          python -m pip install --upgrade pip
          pip install requests minio weaviate-client pydantic unstructured python-dotenv

      - name: Load environment variables
        run: |
          echo "MINIO_ACCESS_KEY=${{ secrets.MINIO_ACCESS_KEY }}" >> $GITHUB_ENV
          echo "MINIO_SECRET_KEY=${{ secrets.MINIO_SECRET_KEY }}" >> $GITHUB_ENV
          echo "WEAVIATE_ENDPOINT=${{ secrets.WEAVIATE_ENDPOINT }}" >> $GITHUB_ENV

      - name: Setup Tailscale
        uses: tailscale/github-action@v2
        with:
          oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
          oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
          tags: tag:ci

      - name: Run Hydrate Script
        run: |
          python ./hydrate/hydrate.py ./hydrate/urls.txt cda-datasets process_log.txt
        shell: bash

      - name: Upload Process Log as Artifact
        uses: actions/upload-artifact@v2
        with:
          name: processed-urls-log
          path: 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.coloradmin.cn/o/1859847.html

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

相关文章

MindManager2024思维导图大升级!轻松绘制思维导图

思维导图大升级!MindManager2024新体验 最近在用MindManager2024制作思维导图,感觉它是一款非常专业的软件。它的界面设计简洁明了,操作流畅,让我能够轻松地整理思绪、规划计划和记录灵感💡。 MindManager思维导图工具…

电商平台是申请ICP许可证还是EDI许可证?

随着直播行业大火热,越来越多的企业开始从事电商业务,那么电商平台的,需要办理什么许可证?是ICP许可证还是EDI许可证?今天小编为您详细说明一下。 首先,不管是ICP许可证还是EDI许可证,都属于增…

写一个坏越的个人天地(三)

昨天卡巴卡巴还是投出了学习代码以来的第一份简历,遇到好的岗位还是想争取下的吧,虽然我觉得大概率还是gg了。 昨天完成了首页的上半部分 下半部分我的构思是左右栏,左侧为菜单栏,右侧为业务栏,左侧调整右侧router进行切换内容 可以用来展示js css的小demo 稍微调整下ro…

ONLYOFFICE8.1版本震撼来袭

目录 软件简介 产品概述: 功能特点: 技术原理: 版本与部署: 8.1版本更新 全新的PDF编辑器 1.文本编辑 2.页面处理 (添加、旋转、删除) 3.插入和调整各种对象,例如表格、形状、文本框、…

Redis之商品缓存

文章目录 什么是缓存添加Redis缓存缓存更新策略缓存穿透缓存空对象布隆过滤器 缓存雪崩给不同的key的TTL添加随机值利用Redis集群提高服务的可用性给缓存业务添加降级限流策略给业务添加多级缓存 缓存击穿互斥锁逻辑过期 缓存工具封装方法1 写入redis方法2 设置逻辑过期方法3 解…

Android集成高德地图SDK(1)

1.新建Android应用,确定应用包名 2.注册高德开放平台,打开控制台页面,应用管理,我的应用,创建新应用 3.添加Key 4.获取SHA1码 找到Android Studio自带的keytool 将其拖到cmd中,输入命令 -v -list -keystor…

Qt:2.环境搭建

目录 1.搭建需要的三个组件: 2.下载Qt安装包: 3.安装qt: 4.配置环境变量: 1.搭建需要的三个组件: C编译器(gcc,cl.exe等)Qt的SDK:软件开发工具包,Windows…

component-切换选中状态更改

1.例 实现默认选中初始值&#xff0c;点击选中对应状态。 2.代码 2.1 html <span click"ponIn()" class"market-switch" :style"{color: SelectedOne ? :#1890FF,borderBottom:SelectedOne ? :1px solid #1890FF}">业务1</span>…

适用于 Windows 11 的 5 大数据恢复软件 [免费和付费]

为什么我们需要Windows 11数据恢复软件&#xff1f; 计算机用户经常遇到的一件事就是数据丢失&#xff0c;这种情况随时可能发生。错误地删除重要文件和文件夹可能会非常令人担忧&#xff0c;但幸运的是&#xff0c;有一种方法可以恢复 PC 上丢失的数据。本文将向您展示可用于…

Servlet工作原理

Servlet 工作原理 编写Servlet 创建servlet 创建一个MyServlet继承HttpServlet&#xff0c;重写doGet和doPost方法&#xff0c;也就是看请求的方式是get还是post&#xff0c;然后用不同的处理方式来处理请求&#xff0c; 2. 配置Servlet //添加参数 <servlet><se…

【C++/STL】:优先级队列(priority_queue)的使用及底层剖析仿函数

目录 &#x1f4a1;前言一&#xff0c;优先级队列的使用二&#xff0c;仿函数1&#xff0c;什么是仿函数2&#xff0c;仿函数的简单示例 三&#xff0c;优先级队列的底层剖析 &#x1f4a1;前言 优先队列(priority_queue)是一种容器适配器&#xff0c;默认使用vector作为其底层…

小学数学蝴蝶模型详解

蝴蝶模型 1.蝴蝶模型仅存在于梯形中&#xff0c;是连接梯形两条对角线而形成的&#xff0c;如下图&#xff1a; 2.蝴蝶模型有几条公式 (1) (2) S△AODS△BOC 等等......

GPT-5的未来愿景:技术突破、智能协作与伦理道德考量

随着人工智能技术日新月异的进步&#xff0c;GPT-5已然崭露头角&#xff0c;它不仅预示着新一轮的技术风暴&#xff0c;更象征着自然语言处理与智能系统协作将迈入一个崭新的纪元。然而&#xff0c;在这一技术奇迹的背后&#xff0c;我们亦需审慎思考伦理道德及安全性问题。 技…

ChatGPT的原理简介

目录 前言 1. 什么是ChatGPT&#xff1f; 2. GPT模型的基本原理 自注意力机制 预训练和微调 3. ChatGPT的工作流程 4. ChatGPT的优势和挑战 5. 实例对话 6. 未来展望 结语 前言 在这个智能科技飞速发展的时代&#xff0c;聊天机器人逐渐成为我们生活中的“新朋友”。…

Go的GUI Fyne开发环境搭建—Windows 11

安装go 到官网下载安装go安装包 https://go.dev/learn/ 通过如下命令检验安装是否成功&#xff0c;出现版本号则安装成功 go version安装国内go依赖包代理 go env -w GOPROXYhttps://goproxy.cn安装gcc编译器 直接用官网提供的安装建议第二条&#xff0c;到这个地址进行下载…

mysql数据库索引的选择性

文章目录 索引的选择性索引选择性的计算单列索引的选择性计算值组合列索引的选择性计算值 索引列的两个基本要求 索引的选择性 是指不重复的索引值与表总记录数的比值&#xff0c;其范围(0,1]。通过索引的选择性&#xff0c;可以确定该索引是否合理(70%)。索引选择性的计算 表…

病毒防护:恶意代码检测技术,病毒分类、传播方式,恶意代码的清除与防护

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这一章节我们需…

HarmonyOS Next开发学习手册——ExtensionAbility

概述 EmbeddedUIExtensionAbility 是EMBEDDED_UI类型的ExtensionAbility组件&#xff0c;提供了跨进程界面嵌入的能力。 EmbeddedUIExtensionAbility需要和 EmbeddedComponent 一起配合使用&#xff0c;开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的Embed…

联邦学习——学习笔记2:联邦学习×资源受限下的自适应本地迭代次数

文章目录 一、符号二、应用场景三、与FedAvg算法区别 本笔记参考自b站up主&#xff1a;丸一口 论文参考自Adaptive Federated Learning in Resource Constrained Edge Computing Systems 原视频链接 一、符号 原文的符号解释如下图绿色字体所注 二、应用场景 就是在资源小…

【详述】BP神经网络建模流程一步一步详述

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、BP神经网络的建模流程二、BP神经网络的建模分步讲解2.1.数据归一化2.2.数据划分2.3.网络结构设置2.4.网络训练2.5.训练效果评估 本文梳理BP神经网络的建模流程&#xff0c;供大家建模时进行借鉴。 一、BP神经…