{"id":29480951,"url":"https://github.com/turtacn/cloudlink","last_synced_at":"2025-07-14T23:55:11.407Z","repository":{"id":304327491,"uuid":"1018464303","full_name":"turtacn/cloudlink","owner":"turtacn","description":"CloudLink：an open source pluggable Go SDK to connect and manage resources across hybrid, multi-cloud, and SaaS platforms in real time — enabling secure, standardized, and low-friction cloud integration powered by generative AI.","archived":false,"fork":false,"pushed_at":"2025-07-12T11:32:17.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"g4","last_synced_at":"2025-07-12T12:27:29.561Z","etag":null,"topics":["cloud-connector","cloud-integration","cloud-management","cloud-sdk","devops-tool","go","hybrid-cloud","infrastructure","multi-cloud","plugin-architecture"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/turtacn.png","metadata":{"files":{"readme":"README-zh.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-12T10:13:58.000Z","updated_at":"2025-07-12T11:32:21.000Z","dependencies_parsed_at":"2025-07-12T12:28:03.177Z","dependency_job_id":null,"html_url":"https://github.com/turtacn/cloudlink","commit_stats":null,"previous_names":["turtacn/cloudlink"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/turtacn/cloudlink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2Fcloudlink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2Fcloudlink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2Fcloudlink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2Fcloudlink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/turtacn","download_url":"https://codeload.github.com/turtacn/cloudlink/tar.gz/refs/heads/g4","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtacn%2Fcloudlink/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265375218,"owners_count":23755188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-connector","cloud-integration","cloud-management","cloud-sdk","devops-tool","go","hybrid-cloud","infrastructure","multi-cloud","plugin-architecture"],"created_at":"2025-07-14T23:55:10.337Z","updated_at":"2025-07-14T23:55:11.400Z","avatar_url":"https://github.com/turtacn.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# CloudLink\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/turtacn/cloudlink)](https://goreportcard.com/report/github.com/turtacn/cloudlink)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/turtacn/cloudlink/blob/main/LICENSE)\n\n**CloudLink** 是 Nexus Cloud 的数字底座，这是一个“数字便利店”式的混合云管理平台。它作为一个轻量、高效、中立的连接器生态系统，实现对多云和混合环境中异构云资源的标准化、实时访问和控制。与传统 IaC 工具不同，CloudLink 聚焦于命令式操作，用于即时管理，填补了声明式编排与实时 CMP 需求之间的鸿沟。\n\n项目仓库：[https://github.com/turtacn/cloudlink](https://github.com/turtacn/cloudlink)\n\n英文版请参阅 [README.md](README.md)。\n\n## 主要痛点与核心价值\n\n在多云与混合架构时代，企业面临资源异构、认证复杂、API 差异等挑战。传统工具如 Terraform（声明式 IaC）擅长终态编排，但不适合实时控制（如查询实时 CPU 使用率或即时关机）。Crossplane 将资源绑定到 Kubernetes CRD，限制了非 K8s 生态的灵活性。\n\n**核心价值**：\n- **连接一切，标准化一切，管理一切**：提供标准化抽象层，支持实时操作，降低集成成本，并确保未来演进性。\n- **战略作用**：作为 Nexus Cloud 的统一入口和智能管家，提供平台中立性、快速市场响应和生态扩展。\n- **差异化**：命令式实时焦点（相较 Terraform 的声明式模型）与纯 Go 灵活性（相较 Crossplane 的 K8s 依赖），使其成为可演化的“云连接操作系统内核”，适用于多租户、跨云场景。\n\n## 主要功能特性\n\n- **标准化接口**：Go 接口用于资源如 `VirtualMachine`、`StorageBucket` 等，强调实时控制。\n- **插件式 Provider**：模块化适配器，支持版本管理、热插拔和远程注册。\n- **统一认证**：集成 HashiCorp Vault，支持动态凭证、轮换和多租户隔离。\n- **实时查询与控制**：支持实时状态拉取、通过 `context.Context` 取消操作，以及结构化错误处理。\n- **缓存与优化**：基于 Redis 的缓存，用于资源列表和指标，支持 TTL 和失效机制。\n- **可观测性**：Prometheus 指标和 OpenTelemetry 追踪，用于 API 调用、错误和插件健康。\n- **安全与多租户**：运行时凭证拉取、mTLS 和按 TenantID/Region 隔离。\n- **扩展性**：gRPC/HTTP 远程插件、Kubernetes sidecar 支持，以及事件钩子用于工作流。\n- **SaaS 集成**：可扩展到非云资源如 Salesforce 或 GitHub。\n\n详细架构请参阅 [docs/architecture.md](docs/architecture.md)。\n\n## 架构概览\n\nCloudLink 采用分层、模块化设计：\n- **核心层**：标准化模型和接口。\n- **Provider 层**：可插拔的厂商适配器。\n- **基础设施层**：缓存（Redis）、秘密管理（Vault）、可观测性。\n- **扩展层**：远程插件和事件驱动特性。\n\n这确保了低耦合、高内聚和易测试性。参阅 [docs/architecture.md](docs/architecture.md) 获取图表和深入设计。\n\n## 构建与运行指南\n\n### 前置条件\n- Go 1.20.2 或更高版本\n- Redis（用于缓存）\n- HashiCorp Vault（用于秘密管理）\n- 可选：Docker 用于容器化部署\n\n### 安装\n```bash\ngit clone https://github.com/turtacn/cloudlink.git\ncd cloudlink\ngo mod tidy\n````\n\n### 构建\n\n```bash\ngo build -o cloudlink ./cmd/cloudlink\n```\n\n### 运行\n\n```bash\n./cloudlink --config config.yaml\n```\n\n示例 `config.yaml`：\n\n```yaml\nproviders:\n  - name: aws\n    version: v1.0.0\ncache:\n  redis: redis://localhost:6379\nvault:\n  addr: http://localhost:8200\n```\n\n### 测试\n\n运行单元测试：\n\n```bash\ngo test ./...\n```\n\n使用内置验证工具：\n\n```bash\ngo run tools/verify-provider --provider=aws\n```\n\n## 演示：代码片段\n\n### 标准化接口示例\n\n演示实时 VM 控制：\n\n```go:internal/core/virtualmachine.go\npackage core\n\nimport \"context\"\n\n// VirtualMachine 定义了 VM 的命令式操作。\ntype VirtualMachine interface {\n    GetStatus(ctx context.Context, id string) (Status, error) // 实时状态查询\n    Shutdown(ctx context.Context, id string) error            // 即时关机\n}\n\ntype Status struct {\n    CPUUsage float64 `json:\"cpu_usage,omitempty\"`\n    Running  bool    `json:\"running,omitempty\"`\n}\n```\n\n### Provider 注册示例\n\n展示 AWS Provider 的插件注册：\n\n```go:internal/providers/aws/provider.go\npackage aws\n\nimport (\n    \"context\"\n    \"github.com/turtacn/cloudlink/internal/core\"\n    \"github.com/turtacn/cloudlink/internal/registry\"\n)\n\ntype AWSProvider struct{}\n\nfunc (p *AWSProvider) VirtualMachine() core.VirtualMachine {\n    return \u0026awsVM{} // 实现接口\n}\n\nfunc init() {\n    registry.Register(\"aws\", \u0026AWSProvider{})\n}\n```\n\n### 实时查询使用示例\n\n```go:main.go\npackage main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"github.com/turtacn/cloudlink/internal/registry\"\n)\n\nfunc main() {\n    provider := registry.Get(\"aws\")\n    vm := provider.VirtualMachine()\n    status, err := vm.GetStatus(context.Background(), \"vm-123\")\n    if err != nil {\n        fmt.Println(\"错误:\", err)\n    } else {\n        fmt.Printf(\"CPU 使用率: %.2f%%\\n\", status.CPUUsage)\n    }\n}\n```\n\n这些片段展示了 CloudLink 的实时、命令式能力，与 Terraform 等声明式工具的区别。\n\n## 贡献指南\n\n欢迎贡献！请遵循以下步骤：\n\n1. Fork 仓库。\n2. 创建特性分支：`git checkout -b feature/new-feature`。\n3. 提交变更：`git commit -m '添加新特性'`。\n4. 推送分支：`git push origin feature/new-feature`。\n5. 打开 Pull Request。\n\n详情见 [CONTRIBUTING.md](CONTRIBUTING.md)。确保代码符合 Go 标准并包含测试。\n\nApache 2.0 许可。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturtacn%2Fcloudlink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fturtacn%2Fcloudlink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturtacn%2Fcloudlink/lists"}