15、解锁 Azure Arc 与 GitOps:提升云管理与安全的双重利器

解锁 Azure Arc 与 GitOps:提升云管理与安全的双重利器

1. 连接 Azure Arc SQL Server for Linux

要将 Linux 计算机连接到 Azure Arc 服务器和 Azure Arc SQL 服务器,可使用 RegisterSqlServerArc 脚本,具体操作步骤如下:
1. 将 RegisterSqlServer.Arc.sh 复制到 Linux 服务器,并使该文件可执行:

chmod 700 RegisterSqlServerArc.sh
  1. 运行脚本:
sudo ./RegisterSqlServerArc.sh
  1. 当系统提示时,选择 Y 以安装 Azure CLI。

需要注意的是,在当前预览版本中,Azure Arc SQL Server 对 Linux 版本 SQL Server 的支持有限。Azure Arc SQL Server 的环境运行状况和安全中心功能在 Linux 上会显示为灰色,Linux SQL 服务器的增值功能仅限于库存和标记功能。

2. 在 Azure Resource Graph 中查看 SQL Server 库存

Azure Arc 的一个强大功能是将混合资产的配置投影到 Azure Resource Manager (ARM) 中。这意味着你可以根据需要使用 Azure 中的所有管理工具来完成工作。在 Azure 门户中,可使用 Azure Resource Graph Explorer 浏览 Azure 资源,并可选择导出数据以在其他记录和报告系统中使用。
若要使用 Azure Resource Graph Explorer 查看 Azure Arc SQL Server 库存数据,请按以下步骤操作:
1. 导航到该页面: https://portal.azure.com/#blade/HubsExtension/ArgQueryBlade
2. 在搜索框中,筛选资源类型 Microsoft.azurearcdata/sqlserverinstances (SQL Server - Azure Arc)。
3. 点击资源类型以填充查询窗口,然后点击“运行查询”。查询结果将包含 SQL 服务器版本、版本号、实例名称、TCP 端口和排序规则类型等信息。
4. 在结果区域中,点击“下载为 CSV”,以获取 SQL 库存的离线记录副本。

3. 大规模连接 SQL Server 实例到 Azure Arc

你可以调整 Azure Arc SQL Server 安装脚本,以在多台计算机上注册 SQL Server 实例。具体的大规模注册方法详情可参考此 URL: https://docs.microsoft.com/en-us/sql/sql-server/azure-arc/connect-at-scale?WT.mc_id=Portal-Microsoft_Azure_HybridData_Platform&view=sql-server-ver15 。该过程与创建服务主体、授予权限以及修改安装脚本以使用服务主体的凭据等步骤类似。

4. 按需运行 SQL 评估

Azure Arc SQL Server 的核心功能之一是与 SQL Server 评估集成,它提供了一种大规模部署 SQL Server 评估解决方案的机制。有两种方式可将 SQL Server 评估部署到 Azure Arc SQL 服务器:
- 自动部署 :使用 Azure VM 扩展。
- 手动部署 :在每台 SQL Server 上运行脚本。

你可以从 Azure Arc SQL Server 的环境运行状况页面开始使用这两种方法。无论选择哪种方法,解决方案都会创建一个计划任务,每周运行一次 SQL Server 评估,并将报告数据上传到 Azure Log Analytics 工作区。

5. 服务中心连接

在尝试运行 SQL Server 评估之前,请参考此 URL 的先决条件部分: https://docs.microsoft.com/en-us/sql/sql-server/azure-arc/assess 。特别要确保已将 Azure 订阅链接到 Microsoft 服务中心,并添加了 SQL Server 评估。你必须在服务中心注册,并在通过同一启用电子邮件的帐户注册的 Azure 订阅上拥有所有者或贡献者权限。

6. 使用托管服务帐户自动部署

当你可以使用托管服务帐户 (MSA) 方法时,可按以下步骤在 Azure Arc SQL Server 上生成并查看评估:
1. 指定托管服务帐户以激活“配置 SQL 评估”按钮。这将通过部署 CustomScriptExtension 从门户启动评估。由于一次只能部署一个 CustomScriptExtension ,因此 SQL 评估的脚本扩展将在执行后自动删除。如果主机上已部署了其他 CustomScriptExtension ,“配置 SQL 评估”按钮将不会激活。
2. 以 DOMAIN\MSAname$ 的格式输入托管服务帐户,并确认工作目录(默认情况下为 C:\sql_assessment\work_dir )。
3. 点击“配置 SQL 评估”按钮。
4. 名为 CustomScriptExtension 的 VM 扩展将安装在 Azure Arc 服务器中。 CustomScriptExtension 将在 Azure Arc SQL Server 上运行 PowerShell 加入脚本。
5. 大约 1 到 2 小时后,“查看 SQL 评估结果”按钮将变为可用。点击该按钮将在新窗口中打开评估结果。

7. 使用配置脚本手动部署

当你使用下载配置脚本方法时,可按以下步骤在 Azure Arc SQL Server 上生成并查看评估:
1. 从 Azure Arc 服务器环境运行状况页面点击“下载配置脚本”按钮。
2. 保存 AddSqlAssessment.ps1 文件,并将其复制到 Azure Arc SQL Server。脚本示例如下:

Add-SQLAssessmentTask -SQLServerName "WS19ArcDemo.odyssey.com" -WorkingDirectory "C:\sql_assessment\work_dir" -RunWithManagedServiceAccount $True -ScheduledTaskUsername "ODYSSEY\momActGMSA$" -ScheduledTaskPassword (new-object System.Security.SecureString)
  1. 观察服务器上是否在路径 Task Scheduler ➤ Task Scheduler Library ➤ Microsoft ➤ Operations Management Suite ➤ AOI-<GUID> ➤ Assessments ➤ SQL Assessment 下创建了一个计划任务。
  2. 在 Azure Arc SQL Server 上的计划任务完成后不久,如果你返回 Azure Arc SQL Server 的 Azure 门户页面并再次点击“环境运行状况”菜单项,将看到与上述相同的报告视图。
8. 为 SQL Server 启用 Microsoft Defender for Cloud

除了 Azure Arc SQL Server 的库存、标记和 SQL 评估等优势外,该解决方案还有一个高价值功能,即能在 Azure 门户的 Azure Arc SQL Server 页面上显示 Microsoft Defender for Cloud 针对 SQL Server 的工作负载保护建议和安全警报。
建议为所有受支持的资源类型启用 Microsoft Defender for Cloud 保护,包括 Azure Defender for SQL Server。Microsoft Defender for Cloud 针对 SQL Server 的工作负载保护可检测异常活动,当出现可疑的数据库活动、潜在漏洞、SQL 注入攻击以及异常的数据库访问和查询模式时,会触发安全警报。

9. Git 概述

Git 是一个开源的版本控制系统,于 2005 年创建,是当今最流行的版本控制系统。它是分布式的,开发者可以在本地拥有完整的代码快照,并在本地进行开发,然后与服务器上的存储库同步。Git 工具几乎支持所有主流操作系统,其主要目标包括:
- 速度 :帮助团队更快地发布软件,使公司能够更快地将软件推向市场并进行创新。
- 分布式 :与过去的集中式版本控制系统不同,Git 更适合远程和分布式团队,开发者即使在移动状态下也能继续工作。
- 完整性 :通过对所有数据进行校验和处理,确保存储库中的数据完整性,任何文件或目录的修改都会被 Git 检测到。

常用的 Git 命令如下:
| 命令 | 描述 |
| ---- | ---- |
| git clone | 从远程存储库创建本地副本 |
| git add | 对已做的更改进行暂存,作为更改跟踪过程的第一步 |
| git commit | 创建更改的快照,完成更改跟踪过程 |
| git push | 将本地提交更新到远程存储库的分支 |
| git pull | 从远程存储库拉取更新到本地分支 |

Git 的两个关键特性是分支和提交。分支是指向主分支中最后一次提交的指针,通过分支可以实现独立开发,最后通过合并操作将不同分支的代码合并到主分支。提交则是记录对存储库所做的更改。

10. GitHub 概述

GitHub 是一个基于 Git 的在线代码托管平台,由微软于 2018 年收购。它为团队提供了一个统一的代码存储和协作平台,拥有超过 4000 万用户和 1.9 亿个存储库。GitHub 有免费账户(常用于开源项目)和付费账户(供组织使用)。除了基本的版本控制功能外,GitHub 还提供了许多额外的功能和产品,如:
- GitHub Pages :用于托管静态网页。
- GitHub Actions :自动化和执行开发工作流。
- GitHub Discussions :项目社区交流论坛。
- GitHub Packages :软件包托管和管理服务。
- GitHub Insights :提供软件交付过程的指标和分析报告。
- GitHub Desktop :桌面应用程序,提供图形用户界面。
- GitHub CLI :命令行界面。

此外,GitHub 还有一个市场,提供免费和付费的应用程序,可扩展其功能。

11. GitOps 概述

在深入了解 GitOps 之前,先看看它能解决的一些问题:
- 问题一 :在 DevOps 云原生时代,运维和开发的界限变得模糊,开发人员需要承担更多运维相关的活动,但让开发人员使用运维工具和理解运维实践并非易事。
- 解决方案 :GitOps 对运维工具进行抽象,自动化运维实践,使开发人员能够更轻松地承担运维活动,同时以 Git 作为单一事实来源。
- 问题二 :在将应用程序部署到 Kubernetes 时,开发团队和运维团队的协作方式可能导致 Git 存储库中的代码与实际环境脱节,存在配置漂移的风险。
- 解决方案 :通过 GitOps 进行应用程序和配置部署,确保实际环境的状态与 Git 存储库中指定的期望状态一致。

GitOps 是由 Weaveworks 公司创建的一种操作模式,它将应用程序和声明式基础设施代码存储在 Git 中,作为自动化持续交付的单一事实来源。GitOps 是 DevOps 的逻辑扩展,将版本控制、协作和持续部署等最佳实践应用于环境自动化。

GitOps 的原则和实践如下:
- 原则
- 声明式配置
- 系统状态以声明方式描述
- 版本控制,不可变存储
- Git 作为单一事实来源
- 期望的系统状态在 Git 中进行版本控制
- 自动化交付
- Git 作为操作的唯一位置
- 软件代理强制执行期望状态并在出现漂移时发出警报
- 闭环,自动交付批准的系统状态更改
- 实践
- 拉取优先于推送
- 每个应用程序使用两个存储库(一个用于应用程序源代码,一个用于配置)
- 制定密钥管理计划
- 确保在 GitOps 过程中包含测试

GitOps 的工作流程如下:

graph LR
    A[Git 存储库] --> B[GitOps 操作员]
    B --> C[Kubernetes 集群]
    C --> D[实时环境]
    D --> E{状态匹配?}
    E -->|是| F[无操作]
    E -->|否| B

GitOps 操作员会监视 Git 存储库的任何更改,拉取更改并通过 Kubectl Helm 将更改应用到 Kubernetes 集群,确保实时环境的状态与 Git 中描述的期望状态一致。主要的 GitOps 操作员有 Flux 和 Argo CD,它们专为 Kubernetes 设计,但 GitOps 并不局限于 Kubernetes,也可用于任何可以观察和声明式描述的系统。

12. GitOps 与 Azure Arc 启用的 Kubernetes

Azure Arc 启用的 Kubernetes (Arc K8s) 使用 GitOps 进行 Kubernetes 配置和应用程序部署。它使用 Flux 作为 GitOps 操作员,Flux 是一个开源的 GitOps 操作员,以 Pod 的形式运行在 Kubernetes 集群中。Flux 采用拉取式方法同步 Git 存储库和 Kubernetes 集群,并可对集群进行创建、更改和删除操作。

Arc K8s 与 Git 存储库的连接通过 Azure Resource Manager 进行管理,连接资源存储在 Azure Cosmos DB 数据库中,并在静态时进行加密。可以使用 Azure 门户或 Azure 命令行界面 (CLI) 设置连接,连接资源具有以下属性:
- 配置名称

总之,Azure Arc 和 GitOps 为云管理和安全提供了强大的解决方案。Azure Arc 扩展了非 Azure 服务器的安全功能,而 GitOps 则通过将 Git 作为单一事实来源,实现了应用程序和配置的自动化部署和管理,提高了开发和运维的效率和可靠性。

解锁 Azure Arc 与 GitOps:提升云管理与安全的双重利器

13. GitOps 为团队和组织带来的关键益处

GitOps 为团队和组织带来了诸多显著的好处,具体如下:
| 益处 | 描述 |
| ---- | ---- |
| 增强开发者体验与易采用性 | 以 Git 作为单一事实来源,开发者能更熟悉和便捷地操作,降低学习成本,提高开发效率。 |
| 更高的环境可靠性 | 持续同步确保实时环境与 Git 中描述的期望状态一致,减少因配置不一致导致的问题。 |
| 完整的审计跟踪 | 所有操作都在 Git 中记录,满足合规性要求,同时提高系统的稳定性和可追溯性。 |
| 提升安全性 | 访问控制转移到 GitOps 操作员,安全策略以代码形式实现,实现凭证和状态的分离。 |
| 易于回滚和标准化 | 所有内容以代码形式存在,便于进行回滚操作,同时保证系统的一致性和标准化。 |

14. 结合 Azure Arc 和 GitOps 的实际应用场景

以下是一些结合 Azure Arc 和 GitOps 的实际应用场景:
- 混合云环境管理 :在混合云环境中,使用 Azure Arc 连接非 Azure 服务器,利用 GitOps 实现对这些服务器上应用程序和配置的自动化部署和管理。例如,企业可能在本地数据中心和公有云都有服务器,通过 Azure Arc 和 GitOps 可以统一管理这些服务器上的应用程序。
- 多集群 Kubernetes 管理 :对于拥有多个 Kubernetes 集群的组织,Azure Arc 可以将这些集群连接到 Azure 资源管理器,而 GitOps 可以确保所有集群的配置和应用程序状态一致。例如,大型企业可能在不同地区有多个 Kubernetes 集群,通过 GitOps 可以实现对这些集群的集中管理。
- 安全与合规性管理 :Azure Arc 提供了安全服务,如 Microsoft Defender for Cloud 对 SQL Server 的保护,而 GitOps 可以确保安全策略以代码形式部署和管理,提高安全策略的一致性和可维护性。例如,企业可以通过 GitOps 自动化部署安全策略到所有连接的服务器和集群。

15. 总结与展望

Azure Arc 和 GitOps 为云管理和安全提供了强大的解决方案。Azure Arc 扩展了非 Azure 服务器的安全功能,使企业能够在混合云环境中充分利用 Azure 的安全服务。GitOps 则通过将 Git 作为单一事实来源,实现了应用程序和配置的自动化部署和管理,提高了开发和运维的效率和可靠性。

在未来,随着云计算和 DevOps 实践的不断发展,Azure Arc 和 GitOps 的应用将更加广泛。企业可以进一步探索如何利用这两个技术,实现更高效的云管理和更强大的安全保障。例如,可以结合机器学习和人工智能技术,实现对系统状态的智能监控和预测,提前发现和解决潜在的问题。

同时,随着更多的 GitOps 操作员和工具的出现,企业可以根据自身需求选择最适合的工具和方案。例如,对于不同的云平台和应用场景,可以选择不同的 GitOps 操作员,以实现最佳的性能和效果。

总之,Azure Arc 和 GitOps 是企业在云时代实现高效管理和安全保障的重要工具,值得企业深入研究和应用。

16. 操作建议与最佳实践

为了更好地应用 Azure Arc 和 GitOps,以下是一些操作建议和最佳实践:
- Azure Arc SQL Server 连接与管理
- 在连接 Azure Arc SQL Server for Linux 时,确保按照正确的步骤操作,特别是在安装 Azure CLI 时,根据提示选择 Y 进行安装。
- 在使用 Azure Resource Graph Explorer 查看 SQL Server 库存数据时,准确筛选资源类型,确保获取到所需的数据。
- 大规模连接 SQL Server 实例到 Azure Arc 时,仔细参考相关文档,正确创建服务主体并授予权限。
- SQL 评估操作
- 运行 SQL 评估前,务必参考服务中心连接的先决条件,确保已将 Azure 订阅链接到 Microsoft 服务中心,并添加了 SQL Server 评估。
- 在使用托管服务帐户自动部署或使用配置脚本手动部署 SQL 评估时,严格按照操作步骤进行,注意输入的格式和路径。
- Git 和 GitHub 使用
- 熟悉常用的 Git 命令,如 git clone git add git commit git push git pull ,通过实践加深对这些命令的理解和掌握。
- 充分利用 GitHub 的各种功能,如 GitHub Actions 实现自动化工作流,GitHub Discussions 进行项目社区交流。
- GitOps 实践
- 遵循 GitOps 的原则和实践,如声明式配置、以 Git 作为单一事实来源、自动化交付等。
- 在实际应用中,选择合适的 GitOps 操作员,如 Flux 或 Argo CD,根据不同的场景进行配置和使用。

17. 未来发展趋势

随着技术的不断进步,Azure Arc 和 GitOps 也将不断发展和完善。以下是一些可能的未来发展趋势:
- 更广泛的集成 :Azure Arc 可能会与更多的云服务和工具进行集成,提供更全面的混合云管理解决方案。GitOps 也可能会与更多的 DevOps 工具和平台集成,实现更高效的开发和运维流程。
- 智能化管理 :结合人工智能和机器学习技术,实现对系统状态的智能监控和预测,自动调整配置和部署,提高系统的稳定性和性能。
- 安全增强 :随着安全威胁的不断增加,Azure Arc 和 GitOps 将进一步加强安全功能,提供更高级的安全防护和合规性管理。
- 跨平台支持 :支持更多的操作系统和云平台,使企业能够在更广泛的环境中使用 Azure Arc 和 GitOps。

18. 总结

Azure Arc 和 GitOps 为企业的云管理和安全带来了巨大的价值。通过 Azure Arc,企业可以将非 Azure 服务器纳入 Azure 的安全管理体系,享受 Azure 的安全服务。而 GitOps 则通过自动化和标准化的部署方式,提高了开发和运维的效率和可靠性。

企业在应用 Azure Arc 和 GitOps 时,应根据自身的需求和实际情况,选择合适的工具和方案,并遵循最佳实践。同时,关注技术的发展趋势,不断探索和创新,以充分发挥 Azure Arc 和 GitOps 的潜力,提升企业的竞争力。希望本文能够帮助读者更好地理解和应用 Azure Arc 和 GitOps,为企业的数字化转型提供有力支持。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值