在 Google Cloud Platform 上安装和管理 Spinnaker

我需要使用此解决方案吗?

Google Cloud Platform 上的 Spinnaker 工具可用于轻松安装一个可正式投入使用的 Spinnaker 实例,并随着时间的推移管理该实例。

此解决方案适用于…

  • 任何想要在 Google Cloud Platform 上,以可正式投入使用的配置方便地安装开源 Spinnaker 的用户

  • 任何想要“仔细试用”Spinnaker,以决定 Spinnaker 是否是适合其需要的持续交付解决方案的用户

  • 管理一个或多个长时间运行的 Spinnaker 实例(包括添加其他管理员、添加帐号、升级等等)的管理员

此解决方案可让您了解…

  • Google 在 GCP 上安装和运行 Spinnaker 方面的建议和最佳做法

  • 与 Spinnaker 经常搭配使用的许多其他服务预先集成

  • 可实现更流畅体验的示例应用和其他帮助程序

此解决方案是什么?

适用于 Google Cloud Platform 的 Spinnaker 解决方案用于在 Google Cloud Platform 上安装和管理 Spinnaker。此解决方案包含安装和管理控制台、Spinnaker 及其微服务以及示例应用。

Spinnaker 是什么?

Spinnaker 是一种开源、多云端持续交付平台,旨在快速、可靠地发布软件变更。

如果您想详细了解 Spinnaker,请访问 Spinnaker 网站

Deck 是什么?

Deck 是 Spinnaker 界面。您可以通过以下任一方式访问 Deck:

  • 通过端口转发

    管理控制台提供了用于转发端口 8080 的命令,以及通过该端口访问 Deck 的点击按钮。

  • 通过互联网,藉由可公开访问的网域

    此网域使用 Identity-Aware Proxy 进行保护。

管理控制台

管理控制台让您能够轻松执行以下操作:

  • 安装 Spinnaker

    适用于 Google Cloud Platform 的 Spinnaker 可让您轻松获得在 Google Kubernetes Engine 上运行的开源 Spinnaker 的工作版本。安装 Spinnaker 后,您可以将 Spinnaker 提供给您的用户。在您启动解决方案后,安装流程会在管理控制台中开始。

  • 管理 Spinnaker

    使用同一管理控制台管理/操作您的 Spinnaker 安装,包括添加管理员和创建帐号以部署到其他 GKE 集群或其他服务商。

    管理流程会在您完成 Spinnaker 安装后开始。您也可以直接通过 Google Cloud Console 的“GKE 应用”页面中的链接打开 Spinnaker。

管理控制台使用 Cloud Shell,其说明显示在窗口右侧的指南中。指南会显示要运行的命令,而且您可以点击这些命令以将它们复制到 Cloud Shell 并在其中运行。

Cloud Shell 是什么?

Cloud Shell 是 Google Cloud Platform 中可让您通过命令行访问 GCP 的工具。

如何找到并恢复说明?

  • 如果右侧面板中的说明消失了,只需在 Cloud Shell 中输入以下命令即可:

    cloudshell launch-tutorial ~/spinnaker-for-gcp/scripts/install/provision-spinnaker.md
    
  • 如果您需要返回管理控制台,则可以按照在 Google Cloud Platform 上安装 Spinnaker 下的说明重新启动管理控制台。

  • 如果遇到问题,请参阅此文档。

我需要为此付费吗?

如果有 Google Cloud Platform 资源随着适用于 Google Cloud Platform 的 Spinnaker 一起安装,您需要为这些资源付费。

…以及可能的其他资源,具体取决于您在安装和配置 Spinnaker 时的选项。您可以使用 Google Cloud Platform 价格计算器估算此解决方案的费用。

详细了解 Google Cloud 价格免费试用版

安装并使用 Spinnaker Google Cloud Platform

如需访问此解决方案,请转至 Marketplace 中“适用于 GCP 的 Spinnaker”页面,并点击该页面上的转至适用于 Google Cloud Platform 的 Spinnaker 按钮。

安装适用于 Google Cloud Platform 的 Spinnaker 后,您就可以通过 Google Cloud Console 访问 Spinnaker 和管理控制台了。

在 Google Cloud Platform 上安装 Spinnaker

  1. 如需从 Marketplace 中“适用于 GCP 的 Spinnaker”页面启动解决方案,请点击转至适用于 Google Cloud Platform 的 Spinnaker 按钮。

  2. 如果系统提示您在 Cloud Shell 中打开,请点击继续

    这时会打开 Cloud Shell,而且还有文件树(显示 Spinnaker 代码库中的文件)和说明。

    管理控制台

    spinnaker-for-gcp 代码库会克隆到您的 Cloud Shell 中。

  3. 按照屏幕上显示的说明执行操作。

管理控制台中的流程会指导您完成安装过程,并向您提供命令。您可以将这些命令复制到 Cloud Shell 提示符,然后按 Enter 键。这些命令会运行脚本,自动完成在 GKE 上安装 Spinnaker 的过程。

任何时候如果说明窗格消失,您都可以从 Cloud Shell 中使用以下命令恢复:

cloudshell launch-tutorial ~/spinnaker-for-gcp/scripts/install/provision-spinnaker.md

访问 Spinnaker

安装 Spinnaker 后,您可以执行转发端口命令,以便访问 Deck 界面并开始使用 Spinnaker。 您可以与您的用户共享端口转发命令,如果他们可以访问 GKE 集群,就可以通过端口 8080 访问 Deck(Spinnaker 界面)。

或者,您可以通过公共互联网公开 Spinnaker,并使用 Identity-Aware Proxy 加以保护。

下面介绍了这两种替代方案。

通过转发端口访问 Spinnaker

您可以在管理控制台中从 Cloud Shell 运行命令来转发端口,以便从 localhost:8080 访问 Spinnaker。

  1. 点击以在管理控制台中复制 connect_unsecured.sh 命令,然后按 Enter 键。

    这会将本地端口 8080 转发到运行 Deck 的 pod 上的端口 9000(Deck 使用的端口)。

  2. 点击“连接到 Spinnaker…”链接。 这会突出显示“预览”按钮。

  3. 点击突出显示的预览按钮,然后选择在端口 8080 上预览

    点击以在端口 8080 上预览

Deck(Spinnaker 界面)会在您的浏览器中打开。Spinnaker 文档网站提供了 Spinnaker 的使用说明。

回到管理控制台,您还可以执行一些其他操作:

  • 将 Spinnaker 安全地提供给您的团队,而无需转发端口
  • 查看 Spinnaker 审核日志
  • 查看来自 Spinnaker 微服务的日志
  • 点击下一步以移至解决方案的 Spinnaker 管理部分。
  • 与您的用户共享端口转发命令,如果他们可以访问 GKE 集群,就可以通过端口 8080 访问 Deck(Spinnaker 界面)。

向您的用户授予通过互联网访问 Spinnaker 的权限

控制台包含一个命令,可帮助您创建一个安全的端点,以便通过互联网向用户安全地公开 Spinnaker。

  1. 导航到管理控制台中的安装流程步骤 2(“连接到 Spinnaker”)。

  2. 在“公开 Spinnaker”下,点击将命令复制到命令行的按钮,然后按 Enter 键。

    该脚本会创建一个新的端点,您可从该端点为 Spinnaker 实例提供服务。脚本执行完成后,控制台中的指南会更改,以显示 OAuth 的设置说明,以便您的用户可以访问此端点。

  3. 按照屏幕上的说明执行操作。

    请确保在创建 OAuth 凭据时复制生成的客户端 ID 和密钥。当脚本提示时,您需要提供它们。

您现在拥有一个 Spinnaker 端点,您可以与使用 OAuth2 进行身份验证的用户共享此端点。管理控制台中会显示指向 Spinnaker 的链接。此 Spinnaker 实例的“GKE 应用”页面上也有一个链接。

管理 Spinnaker

使用管理控制台来管理您的 Spinnaker 实例,包括:

  • 添加管理员(操作员)
  • 添加云服务商帐号

    服务商是您将在其中部署应用的云环境(例如 Google Compute Engine)

  • 升级 Spinnaker

  • 调用 Halyard 命令以配置 Spinnaker

  • 调用 spin 命令以管理 Spinnaker 资源,例如应用和流水线

  1. 访问此控制台的管理部分。

    使用以下任一选项:

    如果控制台已打开

    1. 在安装流程结束时,点击下一步

    2. 后续步骤页面上复制该命令,然后按 Enter 键。

      说明窗格会更改,以启动管理流程。

      从控制台中开始管理 Spinnaker

    如果控制台尚未打开

    1. 转至“Google Kubernetes Engine 应用”页面。

    2. 打开 Spinnaker 应用。

      应用说明包含一个链接:在 Cloud Shell 中打开管理环境。

    3. 点击该链接以打开管理控制台,该控制台现在以管理功能开始。

      从“GKE 应用”页面开始管理 Spinnaker

    4. 选择您的 GCP 项目,然后点击“开始”。

为您的 Spinnaker 实例添加管理员

您可以向更多操作员授予访问权限,这些操作员随后就可以使用管理控制台了。

  1. “IAM 权限”页面上,向此人授予您已在其中安装 Spinnaker 的 GCP 项目的 Owner 角色。

  2. 如果您要在 IAP 保护的端点上提供 Spinnaker,并且您向其授予操作员权限的人不具有“用户”访问权限,请使用以下命令(也可以在控制台的管理部分的步骤 5 中找到该命令):

    ~/spinnaker-for-gcp/scripts/manage/grant_iap_access.sh
    

    …并按照 Cloud Shell 命令行中的说明执行操作。

添加云服务商帐号

您可以使用管理控制台为 Spinnaker 支持的任意数量的云服务商添加帐号。 您的用户打算部署应用的每个云端都需要一个帐号。例如,如果他们将应用部署到 Google Compute Engine 和 AWS,您需要为 Google Compute Engine 和 AWS 分别添加一个服务商帐号。

管理控制台包含以下用于添加 GKE 帐号的命令:

~/spinnaker-for-gcp/scripts/manage/add_gke_account.sh

对于 Google Compute Engine:

~/spinnaker-for-gcp/scripts/manage/add_gce_account.sh

对于 Google App Engine:

~/spinnaker-for-gcp/scripts/manage/add_gae_account.sh

您可以从管理控制台运行这些命令,也可以针对现有 Spinnaker 实例在 Cloud Shell 中输入这些命令。

运行 Halyard 命令

您可以调用任何 hal 命令来配置和管理您的 Spinnaker 安装。

为此,只需在安装 Spinnaker 后,在管理控制台中从 Cloud Shell 调用该命令即可

升级 Spinnaker

  1. 找出您要升级到的版本。

    spinnaker.io 上的“版本”页面列出了可用的稳定版本。

  2. 在控制台中,导航到管理流程:

    ~/spinnaker-for-gcp/scripts/manage/update_console.sh

  3. 点击“下一步”,直到您看到标题为“常用命令的脚本”的屏幕。

  4. 在“升级 Spinnaker”下,将第一个命令复制到 Shell,然后按 Enter 键。

    该命令是…

    cloudshell edit \
     ~/spinnaker-for-gcp/scripts/install/properties
    
  5. 在显示的 properties 文件中修改 Spinnaker 版本。

    export SPINNAKER_VERSION=1.19.3
    

    “Spinnaker 版本”页面会显示可用的最新版本。

  6. 使用下一个命令来调用 Halyard 以应用更改:

    ~/spinnaker-for-gcp/scripts/manage/update_spinnaker_version.sh
    

重启管理控制台

如果您因任何原因需要重启控制台(例如,您关闭了标签页或窗口),则可以按照启动控制台中的同样方式重启控制台。 如果您之前安装了适用于 Google Cloud Platform 的 Spinnaker,则也可以从 Google Cloud Console 的“GKE 应用”页面启动该功能。

重启控制台时,您可以按照控制台的提示,根据需要从上次离开的位置继续执行操作。

升级管理控制台

  1. 在管理控制台中,导航到步骤 3“常用命令的脚本”并滚动到页面底部。

  2. 运行“升级管理环境”下显示的命令。

管理控制台会升级以包含最新更改。

移除适用于 Google Cloud Platform 的 Spinnaker

如果您因任何原因想移除 Spinnaker,请执行以下操作:

  1. 打开管理控制台,然后点击“下一步”,直到进入“删除 Spinnaker”页面。

  2. 将命令复制到 Cloud Shell 终端,然后按 Enter 键。

系统会删除为此 Spinnaker 实例创建的所有资源以及您可能已在其中进行部署的所有现有资源。

示例应用

适用于 Google Cloud Platform 的 Spinnaker 解决方案提供示例应用,帮助您开始使用 Spinnaker。

如需安装这些应用…

  1. 在管理控制台中,点击下一步,直到您进入标题为“使用 Spinnaker”的步骤。

  2. 安装示例应用和流水线下,点击粘贴命令的按钮,然后按 Enter 键。

    Cloud Shell 会返回已进行编号的可用示例应用的列表。

  3. 按所需应用对应的编号,或者按“退出”对应的编号以退出,而不安装任何应用。

  4. Enter

    教程窗格现在会显示示例应用的指南。

  5. 如需退出示例应用并返回到控制台的管理部分,请点击开始,接着点击下一步,然后滚动到“启动新构建”页面底部并运行“返回到 Spinnaker 控制台”下的命令。

其他注意事项

“适用于 GCP 的 Spinnaker”的架构

Spinnaker 及其微服务使用以下架构安装在 GKE 上:

“GCP 上的 Spinnaker”的架构

在现有集群上安装 Spinnaker

您可以在现有基础架构上安装一个或多个 Spinnaker 实例,而无需使用此解决方案来创建新的 Spinnaker 实例。

集群必须具有以下内容:

  • IP 地址别名已启用,因为它使用托管的 Redis 实例

  • 集群节点的完整 Cloud Platform 范围(如果您使用的是项目的默认服务帐号)

在运行安装脚本之前,请执行以下操作:

  1. 复制并运行以下命令(也可在安装流程的步骤 1 中找到该命令):

    cloudshell edit \
        ~/spinnaker-for-gcp/scripts/install/properties
    

    在文件编辑器中打开 properties 文件。

  2. 修改 properties 文件的这一部分,以识别要在其中安装 Spinnaker 的 Kubernetes 集群:

    # If cluster does not exist, it will be created.
    export GKE_CLUSTER=$DEPLOYMENT_NAME
    export ZONE=us-west1-b
    export REGION=us-west1
    
  3. 同样,如果适用,请修改其他属性以识别您想要使用的其他现有基础架构和帐号。

    例如,现有的 Cloud Memorystore Redis 实例,或存储分区或服务帐号。在每种情况下,如果基础架构不存在,安装脚本都会为您创建。

管理多个 Spinnaker 安装

如果您运行多个 Spinnaker 实例,它们必须位于不同的集群上,并因此位于不同的 Kubernetes 上下文中。

如需管理其中某一安装…

  1. 获取您的凭据。

    gcloud container get-credentials
    
  2. 切换到相应的 Kubernetes 上下文。

    kubectl config use-context <CONTEXT_NAME>
    
  3. 拉取存储在该集群中的配置。

    ~/spinnaker-for-gcp/scripts/manage/pull_config.sh.
    

现在,~/spinnaker-for-gcp/scripts/install/properties 中的配置就是用于该 Spinnaker 实例的配置。执行常见的管理任务,包括运行 hal 命令。Spinnaker 会将这些命令应用于所选上下文中的 Spinnaker 实例。