如何在DigitalOceanKubernetes上使用Spinnaker设置CD管道
作为 Write for DOnations 计划的一部分,作者选择了 Free and Open Source Fund 来接受捐赠。
介绍
Spinnaker 是一个开源资源管理和持续交付应用程序,使用功能强大且可定制的管道系统实现快速、安全和可重复的部署。 Spinnaker 允许将应用程序自动部署到许多平台,包括 DigitalOcean Kubernetes。 部署时,您可以将 Spinnaker 配置为使用内置的 部署策略 ,例如 Highlander 和 Red/black,并可选择创建自己的部署策略。 它可以与其他 DevOps 工具集成,例如 Jenkins 和 TravisCI,并且可以配置为监控 GitHub 存储库和 Docker 注册表。
Spinnaker 由 Halyard 管理,该工具专门用于将 Spinnaker 配置和部署到各种平台。 Spinnaker 需要 外部存储 来保存应用程序的设置和管道。 它支持此任务的不同平台,例如 DigitalOcean Spaces。
在本教程中,您将使用 Halyard 将 Spinnaker 部署到 DigitalOcean Kubernetes,并将 DigitalOcean Spaces 作为底层后端存储。 您还将配置 Spinnaker 以在您所需的域中可用,并使用 Let's Encrypt TLS 证书进行保护。 然后,您将在 Spinnaker 中创建一个示例应用程序,创建一个管道,并将 Hello World
应用程序部署到您的 Kubernetes 集群。 测试后,您将通过 GitHub Organizations 引入身份验证和授权。 最后,您将在 Kubernetes 集群中拥有一个安全且有效的 Spinnaker 部署。
注意: 本教程已使用 Spinnaker 1.13.5
进行了专门测试。
先决条件
- 根据官方说明,在本地机器上安装Halyard。 请注意,不支持在高于 16.04 的 Ubuntu 版本上使用 Halyard。 在这种情况下,您可以通过 Docker 使用它 。
- 一个 DigitalOcean Kubernetes 集群,您的连接配置为
kubectl
默认值。 集群必须至少有 8GB RAM 和 4 个 CPU 内核可供 Spinnaker 使用(如果使用较多,则需要更多内核)。 如何配置kubectl
的说明显示在创建集群时显示的 连接到集群 步骤下。 要在 DigitalOcean 上创建 Kubernetes 集群,请参阅 Kubernetes 快速入门 。 - 安装在集群上的 Nginx 入口控制器和证书管理器。 有关如何执行此操作的指南,请参阅 如何在 DigitalOcean Kubernetes 上使用 Cert-Manager 设置 Nginx 入口。
- 带有 API 密钥(访问和秘密)的 DigitalOcean 空间。 要创建 DigitalOcean Space 和 API 密钥,请参阅 如何创建 DigitalOcean 空间和 API 密钥。
- 具有三个 DNS A 记录的域名指向 Ingress 使用的 DigitalOcean 负载均衡器。 如果您使用 DigitalOcean 管理域的 DNS 记录,请参阅 如何创建 DNS 记录 创建 A 记录。 在本教程中,我们将 A 记录称为
spinnaker.example.com
、spinnaker-api.example.com
和hello-world.example.com
。 - 一个 GitHub 帐户,添加到具有管理员权限和公开可见性的 GitHub 组织。 该帐户还必须是组织中团队的成员。 这是完成第 5 步所必需的。
第 1 步 — 使用 Halyard 添加一个 Kubernetes 帐户
在本节中,您将通过 Halyard 将 Kubernetes 帐户添加到 Spinnaker。 在 Spinnaker 的术语中,帐户是用于访问云提供商的命名凭据。
作为先决条件的一部分,您创建了 echo1
和 echo2
服务以及 echo_ingress
入口用于测试目的; 在本教程中您将不需要这些,因此您现在可以删除它们。
首先通过运行以下命令删除入口:
kubectl delete -f echo_ingress.yaml
然后,删除两个测试服务:
kubectl delete -f echo1.yaml && kubectl delete -f echo2.yaml
kubectl delete
命令在传递 -f
参数时接受要删除的文件。
接下来,在您的本地机器上,创建一个文件夹作为您的工作区:
mkdir ~/spinnaker-k8s
通过运行以下命令导航到您的工作区:
cd ~/spinnaker-k8s
Halyard 还不知道应该在哪里部署 Spinnaker。 使用以下命令启用 Kubernetes 提供程序:
hal config provider kubernetes enable
您将收到以下输出:
Output+ Get current deployment Success + Edit the kubernetes provider Success Problems in default.provider.kubernetes: - WARNING Provider kubernetes is enabled, but no accounts have been configured. + Successfully enabled kubernetes
Halyard 记录了启用 Kubernetes 提供程序所采取的所有步骤,并警告说尚未定义任何帐户。
接下来,您将为 Spinnaker 创建一个 Kubernetes 服务帐户 以及 RBAC。 服务帐户是一种仅限于单个命名空间的帐户类型。 它由可以在集群中执行各种任务的软件使用。 RBAC(基于角色的访问控制)是一种管理对 Kubernetes 集群中资源的访问的方法。 它限制了帐户的操作范围,以确保不会无意中更改集群上的重要配置。
在这里,您将授予 Spinnaker cluster-admin
权限以允许它控制整个集群。 如果您希望创建一个更严格的环境,请参阅 官方 Kubernetes 文档关于 RBAC。
首先,通过运行以下命令创建 spinnaker
命名空间:
kubectl create ns spinnaker
输出将如下所示:
Outputnamespace/spinnaker created
运行以下命令创建一个名为 spinnaker-service-account
的服务帐户:
kubectl create serviceaccount spinnaker-service-account -n spinnaker
您已使用 -n
标志指定 kubectl
在 spinnaker
命名空间中创建服务帐户。 输出将是:
Outputserviceaccount/spinnaker-service-account created
然后,将其绑定到 cluster-admin
角色:
kubectl create clusterrolebinding spinnaker-service-account --clusterrole cluster-admin --serviceaccount=spinnaker:spinnaker-service-account
您将看到以下输出:
Outputclusterrolebinding.rbac.authorization.k8s.io/spinnaker-service-account created
Halyard 使用本地 kubectl 访问集群。 在部署 Spinnaker 之前,您需要将其配置为使用新创建的服务帐户。 Kubernetes 帐户使用用户名和令牌进行身份验证。 创建服务帐户时,Kubernetes 会创建一个新密钥并使用帐户令牌填充它。 要检索 spinnaker-service-account
的令牌,您首先需要获取密钥的名称。 您可以通过运行将其获取到名为 TOKEN_SECRET
的控制台变量中:
TOKEN_SECRET=$(kubectl get serviceaccount -n spinnaker spinnaker-service-account -o jsonpath='{.secrets[0].name}')
这会从命名空间 spinnaker
中获取有关 spinnaker-service-account
的信息,并通过传入 JSON 路径来获取它包含的第一个秘密的名称。
通过运行以下命令将秘密的内容提取到名为 TOKEN
的变量中:
TOKEN=$(kubectl get secret -n spinnaker $TOKEN_SECRET -o jsonpath='{.data.token}' | base64 --decode)
您现在可以在环境变量 TOKEN
中使用令牌。 接下来,您需要在 kubectl 中为服务帐户设置凭据:
kubectl config set-credentials spinnaker-token-user --token $TOKEN
您将看到以下输出:
OutputUser "spinnaker-token-user" set.
然后,您需要通过运行以下命令将当前上下文的用户设置为新创建的 spinnaker-token-user
:
kubectl config set-context --current --user spinnaker-token-user
通过将当前用户设置为 spinnaker-token-user
,kubectl 现在配置为使用 spinnaker-service-account
,但 Halyard 对此一无所知。 通过执行以下命令将帐户添加到其 Kubernetes 提供程序:
hal config provider kubernetes account add spinnaker-account --provider-version v2
输出将如下所示:
Output+ Get current deployment Success + Add the spinnaker-account account Success + Successfully added account spinnaker-account for provider kubernetes.
此命令将一个名为 spinnaker-account
的 Kubernetes 帐户添加到 Halyard,并将其标记为服务帐户。
一般来说,Spinnaker 可以通过两种方式部署:分布式安装或本地安装。 分布式 安装是您在本教程中完成的工作——您正在将其部署到云中。 另一方面,Local 安装意味着 Spinnaker 将被下载并安装在运行 Halyard 的机器上。 因为您要将 Spinnaker 部署到 Kubernetes,所以您需要将部署标记为 distributed
,如下所示:
hal config deploy edit --type distributed --account-name spinnaker-account
由于您的 Spinnaker 部署将构建图像,因此有必要在 Spinnaker 中启用 artifacts
。 您可以通过运行以下命令来启用它们:
hal config features edit --artifacts true
在这里,您启用了 artifacts
以允许 Spinnaker 存储有关它创建的对象的更多元数据。
您已通过 Halyard 将 Kubernetes 帐户添加到 Spinnaker。 您启用了 Kubernetes 提供程序,配置了 RBAC 角色,并将当前的 kubectl 配置添加到 Spinnaker,从而向提供程序添加了一个帐户。 现在您将设置后端存储。
第 2 步 — 将空间配置为基础存储
在本节中,您将把 Space 配置为 Spinnaker 部署的底层存储。 Spinnaker 将使用 Space 来存储其配置和管道相关数据。
要在 Halyard 中配置 S3 存储,请运行以下命令:
hal config storage s3 edit --access-key-id your_space_access_key --secret-access-key --endpoint spaces_endpoint_with_region_prefix --bucket space_name --no-validate
请记住将 your_space_access_key
替换为您的 Space 访问密钥,并将 spaces_endpoint_with_region_prefix
替换为您的 Space 端点。 这通常是 region-id.digitaloceanspaces.com
,其中 region-id
是您空间的区域。 您可以将 space_name
替换为您的空间名称。 --no-validate
标志告诉 Halyard 不要立即验证给定的设置,因为不支持 DigitalOcean Spaces 验证。
运行此命令后,Halyard 将询问您的秘密访问密钥。 输入它以继续,然后您将看到以下输出:
Output+ Get current deployment Success + Get persistent store Success + Edit persistent store Success + Successfully edited persistent store "s3".
现在您已经配置了 s3
存储,您将通过运行以下命令确保您的部署将其用作其存储:
hal config storage edit --type s3
输出将如下所示:
Output+ Get current deployment Success + Get persistent storage settings Success + Edit persistent storage settings Success + Successfully edited persistent storage.
您已将 Space 设置为 Spinnaker 实例将使用的底层存储。 现在,您将把 Spinnaker 部署到您的 Kubernetes 集群,并使用 Nginx Ingress Controller 在您的域中公开它。
第 3 步 — 将 Spinnaker 部署到您的集群
在本节中,您将使用 Halyard 将 Spinnaker 部署到您的集群,然后使用 Nginx Ingress 在您的域中公开其 UI 和 API 组件。 首先,您将配置域 URL:一个用于 Spinnaker 的用户界面,一个用于 API 组件。 然后,您将选择所需版本的 Spinnaker 并使用 Halyard 进行部署。 最后,您将创建一个入口并将其配置为 Nginx 控制器。
首先,您需要在 Halyard 中编辑 Spinnaker 的 UI 和 API URL 配置值,并将它们设置为您想要的域。 要将 API 端点设置为所需的域,请运行以下命令:
hal config security api edit --override-base-url https://spinnaker-api.example.com
输出将如下所示:
Output+ Get current deployment Success + Get API security settings Success + Edit API security settings Success ...
要将 UI 端点设置为您将访问 Spinnaker 的域,请运行:
hal config security ui edit --override-base-url https://spinnaker.example.com
输出将如下所示:
Output+ Get current deployment Success + Get UI security settings Success + Edit UI security settings Success + Successfully updated UI security settings.
请记住将 spinnaker-api.example.com
和 spinnaker.example.com
替换为您的域。 这些是您指向在 Nginx Ingress Controller 先决条件期间创建的负载均衡器的域。
您已创建并保护 Spinnaker 的 Kubernetes 帐户,将您的 Space 配置为其底层存储,并将其 UI 和 API 端点设置为您的域。 现在您可以列出可用的 Spinnaker 版本:
hal version list
您的输出将显示可用版本的列表。 在撰写本文时,1.13.5
是最新版本:
Output+ Get current deployment Success + Get Spinnaker version Success + Get released versions Success + You are on version "", and the following are available: - 1.11.12 (Cobra Kai): Changelog: https://gist.GitHub.com/spinnaker-release/29a01fa17afe7c603e510e202a914161 Published: Fri Apr 05 14:55:40 UTC 2019 (Requires Halyard >= 1.11) - 1.12.9 (Unbreakable): Changelog: https://gist.GitHub.com/spinnaker-release/7fa9145349d6beb2f22163977a94629e Published: Fri Apr 05 14:11:44 UTC 2019 (Requires Halyard >= 1.11) - 1.13.5 (BirdBox): Changelog: https://gist.GitHub.com/spinnaker-release/23af06bc73aa942c90f89b8e8c8bed3e Published: Mon Apr 22 14:32:29 UTC 2019 (Requires Halyard >= 1.17)
要选择要安装的版本,请运行以下命令:
hal config version edit --version 1.13.5
建议始终选择最新版本,除非遇到某种回归。
您将看到以下输出:
Output+ Get current deployment Success + Edit Spinnaker version Success + Spinnaker has been configured to update/install version "version". Deploy this version of Spinnaker with `hal deploy apply`.
您现在已完全配置 Spinnaker 的部署。 您将使用以下命令部署它:
hal deploy apply
此命令可能需要几分钟才能完成。
最终输出将如下所示:
Output+ Get current deployment Success + Prep deployment Success + Preparation complete... deploying Spinnaker + Get current deployment Success + Apply deployment Success + Deploy spin-redis Success + Deploy spin-clouddriver Success + Deploy spin-front50 Success + Deploy spin-orca Success + Deploy spin-deck Success + Deploy spin-echo Success + Deploy spin-gate Success + Deploy spin-rosco Success ...
Halyard 正在向您展示 Spinnaker 的每个微服务的部署状态。 在幕后,它调用 kubectl 来安装它们。
Kubernetes 将需要一些时间(平均十分钟)来启动所有容器,尤其是第一次。 您可以通过运行以下命令来查看进度:
kubectl get pods -n spinnaker -w
您已将 Spinnaker 部署到 Kubernetes 集群,但无法在集群之外访问它。
您将把入口配置存储在一个名为 spinnaker-ingress.yaml
的文件中。 使用您的文本编辑器创建它:
nano spinnaker-ingress.yaml
添加以下行:
大三角帆-ingress.yaml
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: spinnaker-ingress namespace: spinnaker annotations: kubernetes.io/ingress.class: nginx certmanager.k8s.io/cluster-issuer: letsencrypt-prod spec: tls: - hosts: - spinnaker-api.example.com - spinnaker.example.com secretName: spinnaker rules: - host: spinnaker-api.example.com http: paths: - backend: serviceName: spin-gate servicePort: 8084 - host: spinnaker.example.com http: paths: - backend: serviceName: spin-deck servicePort: 9000
请记住将 spinnaker-api.example.com
替换为您的 API 域,并将 spinnaker.example.com
替换为您的 UI 域。
配置文件定义了一个名为 spinnaker-ingress
的入口。 注释指定此入口的控制器将是 Nginx 控制器,并且 letsencrypt-prod
集群颁发者将生成 TLS 证书,在先决条件教程中定义。
然后,它指定 TLS 将保护 UI 和 API 域。 它通过将 API 域指向 spin-gate
服务(Spinnaker 的 API 容器),并将 UI 域指向 spin-deck
服务(Spinnaker 的 UI 容器)在适当的端口 [ X202X] 和 9000
。
保存并关闭文件。
通过运行以下命令在 Kubernetes 中创建 Ingress:
kubectl create -f spinnaker-ingress.yaml
您将看到以下输出:
Outputingress.extensions/spinnaker-ingress created
等待几分钟,让 Let's Encrypt 提供 TLS 证书,然后在浏览器中导航到您的 UI 域 spinnaker.example.com
。 您将看到 Spinnaker 的用户界面。
您已将 Spinnaker 部署到您的集群,在您的域中公开了 UI 和 API 组件,并测试了它是否有效。 现在,您将在 Spinnaker 中创建一个应用程序并运行一个管道来部署 Hello World
应用程序。
第 4 步 - 创建应用程序并运行管道
在本部分中,您将使用在您的域中对 Spinnaker 的访问权限来使用它创建一个应用程序。 然后,您将创建并运行管道以部署 Hello World
应用程序,该应用程序可在 paulbouwer/hello-kubernetes 中找到。 之后您将访问该应用程序。
导航到您已在其中公开 Spinnaker 的 UI 的域。 在右上角,按Actions,然后选择创建应用程序。 您将看到 New Application 表单。
输入hello-world
作为名称,输入您的电子邮件地址,然后按创建。
页面加载后,通过单击顶部菜单中的第一个选项卡导航到 Pipelines。 您将看到尚未定义管道。
按 配置新管道 将打开一个新表单。
填写 Deploy Hello World Application
作为您的管道名称,然后按 Create。
在下一页上,单击添加舞台按钮。 作为 Type,选择 Deploy (Manifest),用于部署您指定的 Kubernetes 清单。 对于 Stage Name,输入 Deploy Hello World
。 向下滚动,在 Manifest Configuration 下的文本框中,输入以下行:
清单配置
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-world-ingress namespace: spinnaker annotations: kubernetes.io/ingress.class: nginx certmanager.k8s.io/cluster-issuer: letsencrypt-prod spec: tls: - hosts: - hello-world.example.com secretName: hello-world rules: - host: hello-world.example.com http: paths: - backend: serviceName: hello-kubernetes servicePort: 80 --- apiVersion: v1 kind: Service metadata: name: hello-kubernetes namespace: spinnaker spec: type: ClusterIP ports: - port: 80 targetPort: 8080 selector: app: hello-kubernetes --- apiVersion: apps/v1 kind: Deployment metadata: name: hello-kubernetes namespace: spinnaker spec: replicas: 3 selector: matchLabels: app: hello-kubernetes template: metadata: labels: app: hello-kubernetes spec: containers: - name: hello-kubernetes image: paulbouwer/hello-kubernetes:1.5 ports: - containerPort: 8080
请记住将 hello-world.example.com
替换为您的域,该域也指向您的负载均衡器。
在此配置中,您定义了一个 Deployment
,由 paulbouwer/hello-kubernetes:1.5
图像的三个副本组成。 您还定义了一个 Service
以能够访问它,并定义一个 Ingress 以在您的域中公开 Service
。
按屏幕右下角的保存更改。 完成后,导航回 Pipelines。 在右侧,选择您刚刚创建的管道,然后按开始手动执行链接。 当要求确认时,按 运行 。
此管道将需要很短的时间才能完成。 成功完成后,您将看到进度条完成。
您现在可以导航到您在配置中定义的域。 您将看到 Spinnaker 刚刚部署的 Hello World
应用程序。
您已经在 Spinnaker 中创建了一个应用程序,运行了一个管道来部署一个 Hello World
应用程序,并访问了它。 在下一步中,您将通过启用 GitHub Organizations 授权来保护 Spinnaker。
第 5 步 — 使用 GitHub Organizations 启用基于角色的访问
在本节中,您将启用 GitHub OAuth 身份验证和 GitHub Organizations 授权。 启用 GitHub OAuth 身份验证会强制 Spinnaker 用户通过 GitHub 登录,从而防止匿名访问。 通过 GitHub 组织的授权将访问权限仅限于组织中的人员。 GitHub 组织可以包含 Teams(命名的成员组),您可以使用它们来进一步限制对 Spinnaker 中资源的访问。
要使 OAuth 身份验证正常工作,您首先需要设置授权回调 URL,这是授权后将用户重定向到的位置。 这是以 /login
结尾的 API 域。 您需要手动指定此项,以防止 Spinnaker 和其他服务猜测。 要配置它,请运行以下命令:
hal config security authn oauth2 edit --pre-established-redirect-uri https://spinnaker-api.example.com/login
您将看到以下输出:
Output+ Get current deployment Success + Get authentication settings Success + Edit oauth2 authentication settings Success + Successfully edited oauth2 method.
要使用 GitHub 设置 OAuth 身份验证,您需要为您的组织创建一个 OAuth 应用程序。 为此,请导航到 GitHub 上的组织,转到 Settings,单击 Developer Settings,然后从左侧菜单中选择 OAuth Apps。 之后,点击右侧的【X21X】新建OAuth App【X38X】按钮。 您将看到 Register a new OAuth application 表单。
输入 spinnaker-auth
作为名称。 首页网址输入https://spinnaker.example.com
,授权回调网址输入https://spinnaker-api.example.com/login
。 然后,按注册应用程序。
您将被重定向到新 OAuth 应用程序的设置页面。 请注意 Client ID 和 Client Secret 值——下一个命令将需要它们。
创建 OAuth 应用程序后,您可以通过运行以下命令将 Spinnaker 配置为使用 OAuth 应用程序:
hal config security authn oauth2 edit --client-id client_id --client-secret client_secret --provider GitHub
请记住将 client_id
和 client_secret
替换为 GitHub 设置页面上显示的值。
您的输出将类似于以下内容:
Output+ Get current deployment Success + Get authentication settings Success + Edit oauth2 authentication settings Success Problems in default.security.authn: - WARNING An authentication method is fully or partially configured, but not enabled. It must be enabled to take effect. + Successfully edited oauth2 method.
您已将 Spinnaker 配置为使用 OAuth 应用程序。 现在,要启用它,请执行:
hal config security authn oauth2 enable
输出将如下所示:
Output+ Get current deployment Success + Edit oauth2 authentication settings Success + Successfully enabled oauth2
您已配置并启用 GitHub OAuth 身份验证。 现在用户将被迫通过 GitHub 登录才能访问 Spinnaker。 但是,现在,每个拥有 GitHub 帐户的人都可以登录,这不是您想要的。 为了克服这个问题,您将配置 Spinnaker 以限制对所需组织的成员的访问。
您需要通过本地配置文件进行半手动设置,因为 Halyard 还没有用于设置的命令。 在部署期间,Halyard 将使用本地配置文件覆盖生成的配置。
Halyard 在 ~/.hal/default/profiles/
下查找自定义配置。 名为 service-name-*.yml
的文件被 Halyard 拾取并用于覆盖特定服务的设置。 您将覆盖的服务称为 gate
,它充当整个 Spinnaker 的 API 网关。
在 ~/.hal/default/profiles/
下创建一个名为 gate-local.yml
的文件:
nano ~/.hal/default/profiles/gate-local.yml
添加以下行:
门本地.yml
security: oauth2: providerRequirements: type: GitHub organization: your_organization_name
将 your_organization_name
替换为您的 GitHub 组织的名称。 保存并关闭文件。
通过这一点配置,只有 GitHub 组织的成员才能访问 Spinnaker。
注意: 只有您的 GitHub 组织中成员设置为 Public 的成员才能登录 Spinnaker。 可以在组织的成员列表页面上更改此设置。
现在,您将把 Spinnaker 与更特殊的访问规则解决方案集成:GitHub Teams。 这将使您能够指定哪些团队可以访问在 Spinnaker 中创建的资源,例如应用程序。
为此,您需要为组织中的管理员帐户提供 GitHub 个人访问令牌。 要创建一个,请访问 Personal Access Tokens 并按 Generate New Token 按钮。 在下一页上,给它一个您选择的描述,并确保检查位于 admin:org 下的 read:org 范围。 完成后,按 Generate token 并在它出现时记下它——你将无法再次看到它。
要在 Spinnaker 中配置 GitHub Teams 角色授权,请运行以下命令:
hal config security authz github edit --accessToken access_token --organization organization_name --baseUrl https://api.github.com
请务必将 access_token
替换为您生成的个人访问令牌,并将 organization_name
替换为组织的名称。
输出将是:
Output+ Get current deployment Success + Get GitHub group membership settings Success + Edit GitHub group membership settings Success + Successfully edited GitHub method.
您已更新 GitHub 组设置。 现在,您将通过运行以下命令将授权提供程序设置为 GitHub:
hal config security authz edit --type github
输出将如下所示:
Output+ Get current deployment Success + Get group membership settings Success + Edit group membership settings Success + Successfully updated roles.
更新这些设置后,通过运行启用它们:
hal config security authz enable
您将看到以下输出:
Output+ Get current deployment Success + Edit authorization settings Success + Successfully enabled authorization
完成所有更改后,您现在可以将更改应用到正在运行的 Spinnaker 部署。 执行以下命令来执行此操作:
hal deploy apply
完成后,等待 Kubernetes 传播更改。 这可能需要相当长的时间——您可以通过运行以下命令来查看进度:
kubectl get pods -n spinnaker -w
当所有 pod 的状态变为 Running
和可用性 1/1
时,导航到 Spinnaker UI 域。 如果您尚未登录,您将被重定向到 GitHub 并要求您登录。 如果您登录的帐户是该组织的成员,您将被重定向回 Spinnaker 并登录。 否则,您将被拒绝访问,并显示如下所示的消息:
{"error":"Unauthorized", "message":"Authentication Failed: User's provider info does not have all required fields.", "status":401, "timestamp":...}
GitHub Teams 集成的效果是 Spinnaker 现在将它们转换为 角色 。 您可以在 Spinnaker 中使用这些 角色 来为特定团队的成员加入额外的访问限制。 如果您尝试添加另一个应用程序,您会注意到您现在还可以指定权限,该权限将访问级别(只读或读写)与该应用程序的角色相结合。
您已设置 GitHub 身份验证和授权。 您还配置了 Spinnaker 以限制对组织成员的访问,了解角色和权限,并在与 Spinnaker 集成时考虑了 GitHub 团队的位置。
结论
您已成功配置 Spinnaker 并将其部署到您的 DigitalOcean Kubernetes 集群。 您现在可以从一个中心位置更轻松地管理和使用您的云资源。 您可以使用触发器自动启动管道; 例如,当一个新的 Docker 镜像被添加到注册表时。 要了解有关 Spinnaker 的术语和架构的更多信息,请访问 官方文档 。 如果您希望将私有 Docker 注册表部署到您的集群以保存您的图像,请访问 如何在 DigitalOcean Spaces 之上设置私有 Docker 注册表并将其与 DO Kubernetes 一起使用。