如何在 DigitalOcean Kubernetes 上使用 Spinnaker 设置 CD 管道

作者选择了 自由和开源基金作为 写给捐款计划的一部分接受捐款。

介绍

Spinnaker是一个开源资源管理和连续交付应用程序,用于快速、安全和可重复的部署,使用强大的和可自定义管道系统。 Spinnaker允许自动部署应用程序到许多平台,包括 DigitalOcean Kubernetes。在部署时,您可以配置Spinnaker以使用内置的 部署策略,如Highlander和Red/black,有创建自己的部署策略的选择。

Spinnaker 由 Halyard管理,该工具专门用于配置和部署 Spinnaker 到各种平台. Spinnaker 需要 外部存储以维持应用程序的设置和管道。

在本教程中,您将使用 Halyard 部署 Spinnaker 到 DigitalOcean Kubernetes,以 DigitalOcean Spaces 作为底层后端存储。您还将配置 Spinnaker 以便在您想要的域名上可用,通过使用 Let's Encrypt TLS 证书进行保护。 然后,您将在 Spinnaker 中创建样本应用程序,创建管道,并在您的 Kubernetes 集群中部署一个「Hello World」应用程序。

<$>[注] 注: 本教程已专门用 Spinnaker 1.13.5 测试。

前提条件

  • 根据官方指示,机上安装的Halyard。 请注意,在Ubuntu版本上使用高于16.04的Halyard是不支持的. 在这种情况下,可以使用[通过多克 (https://www.spinnaker.io/setup/install/halyard/#install-halyard-on-docker).
  • 数字海洋库伯内特斯集群与您的连接被配置为"kubectl"默认值 。 集群必须至少有8GB RAM和4个CPU核心可供Spinnaker使用(在使用更重的情况下需要更多). 关于如何配置 kubectl 的指令, 将显示在您的集群** 步骤的 ** 下。 要在 Digital Ocean 上创建库伯内蒂斯集群,请参见 [Kubernetes Quickstart] (https://www.digitalocean.com/docs/kubernetes/quickstart/).
  • 安装在集群上的 Nginx 入侵控制器和证书管理器 。 关于如何做到这一点的指南,见[如何在数字海洋库伯内特斯上设置Nginx入侵装置(https://andsky.com/tech/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes)。
  • 数字海洋空间 有 API 密钥(访问和秘密). 要创建 DigitalOcean 空间和 API 密钥,请参见 [如何创建 DigitalOcean 空间和 API 密钥] (https://andsky.com/tech/tutorials/how-to-create-a-digitalocean-space-and-api-key).
  • 一个有3个DNS A记录的域名指向了入侵者所使用的数字海洋负载平衡器. 如果您正在使用 DigitalOcean 来管理您的域名的 DNS 记录,请查询[如何创建 DNS 记录 (https://www.digitalocean.com/docs/networking/dns/how-to/manage-records/) 创建 A 记录. 在这个教程中,我们将将A记录称为spinnaker.example.com'、spinnaker-api.example.com'和`hello-world.example.com'.
  • A GitHub账户,加上一个GitHub组织,具有管理员权限和公众知名度。 该账户还必须是本组织一个小组的成员。 这需要完成第五步。 (英语)

步骤 1 — 使用 Halyard 添加 Kubernetes 帐户

在本节中,您将通过 Halyard 将 Kubernetes 帐户添加到 Spinnaker。

作为前提的一部分,您创建了echo1echo2服务以及用于测试的echo_ingress入口;您将不需要这些在本教程中,因此您现在可以删除它们。

开始通过运行以下命令删除 ingress:

1kubectl delete -f echo_ingress.yaml

然后,删除两个测试服务:

1kubectl delete -f echo1.yaml && kubectl delete -f echo2.yaml

kubectl delete命令接受文件在通过-f参数时被删除。

接下来,从本地机器创建一个将作为您的工作空间的文件夹:

1mkdir ~/spinnaker-k8s

通过运行以下命令导航到您的工作区:

1cd ~/spinnaker-k8s

Halyard 还不知道该在哪里部署 Spinnaker. 使用此命令启用 Kubernetes 提供商:

1hal config provider kubernetes enable

您将收到以下输出:

 1[secondary_label Output]
 2+ Get current deployment
 3  Success
 4+ Edit the kubernetes provider
 5  Success
 6Problems in default.provider.kubernetes:
 7- WARNING Provider kubernetes is enabled, but no accounts have been
 8  configured.
 9
10+ Successfully enabled kubernetes

Halyard记录了启用Kubernetes提供商所采取的所有步骤,并警告说尚未定义任何帐户。

接下来,您将为 Spinnaker 创建一个 Kubernetes _service 帐户,以及 RBAC。 服务帐户是一种用于单个名称空间的帐户类型。 它由软件使用,可在集群中执行各种任务。 RBAC(基于角色访问控制)是控制对 Kubernetes 集群中的资源的访问的方法。 它限制了帐户的范围,以确保您的集群没有意外改变任何重要的配置。

在这里,您将授予Spinnaker‘cluster-admin’权限,以允许它控制整个集群. 如果您想要创建更具限制性的环境,请参阅RBAC的官方Kubernetes文档

首先,通过运行以下命令创建spinnaker名称空间:

1kubectl create ns spinnaker

结果将看起来像:

1[secondary_label Output]
2namespace/spinnaker created

运行以下命令创建名为spinnaker-service-account的服务帐户:

1kubectl create serviceaccount spinnaker-service-account -n spinnaker

您已使用n旗来指定kubectlspinnaker名称空间中创建服务帐户。

1[secondary_label Output]
2serviceaccount/spinnaker-service-account created

然后将其连接到cluster-admin角色:

1kubectl create clusterrolebinding spinnaker-service-account --clusterrole cluster-admin --serviceaccount=spinnaker:spinnaker-service-account

您将看到以下结果:

1[secondary_label Output]
2clusterrolebinding.rbac.authorization.k8s.io/spinnaker-service-account created

Halyard 使用本地 kubectl 来访问群集。在部署 Spinnaker 之前,您需要将其配置为使用新创建的服务帐户。Kubernetes 帐户使用用户名和代币进行身份验证。当创建服务帐户时,Kubernetes 会创建一个新的秘密,并将其填充到帐户代币中。要获取spinnaker-service-account的代币,您首先需要获取秘密的名称。

1TOKEN_SECRET=$(kubectl get serviceaccount -n spinnaker spinnaker-service-account -o jsonpath='{.secrets[0].name}')

这从名称空间spinnaker获取有关spinnaker-service-account的信息,并通过通过JSON路径获取其所包含的第一个秘密的名称。

将秘密的内容转化为名为TOKEN的变量,运行:

1TOKEN=$(kubectl get secret -n spinnaker $TOKEN_SECRET -o jsonpath='{.data.token}' | base64 --decode)

您现在可以在环境变量TOKEN中使用该代币,接下来,您需要在 kubectl 中为服务帐户设置凭据:

1kubectl config set-credentials spinnaker-token-user --token $TOKEN

您将看到以下结果:

1[secondary_label Output]
2User "spinnaker-token-user" set.

然后,您需要通过运行以下命令将当前背景的用户设置为新创建的spinnaker-token-user:

1kubectl config set-context --current --user spinnaker-token-user

通过将当前用户设置为spinnaker-token-user, kubectl 现在已配置为使用spinnaker-service-account,但 Halyard 对此一无所知。

1hal config provider kubernetes account add spinnaker-account --provider-version v2

结果将是这样的:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Add the spinnaker-account account
5  Success
6+ Successfully added account spinnaker-account for provider
7  kubernetes.

此命令将Kubernetes帐户添加到Hayard,名为spinnaker-帐户,并将其标记为服务帐户。

一般来说,Spinnaker可以以两种方式部署:分布式安装或本地安装。 _Distributed_安装是您在本教程中完成的—您正在部署到云端。 Local installation,另一方面,意味着Spinnaker将下载并安装到Halyard运行的机器上。

1hal config deploy edit --type distributed --account-name spinnaker-account

由于您的 Spinnaker 部署将是构建图像,因此必须在 Spinnaker 中启用文物

1hal config features edit --artifacts true

在这里,您已启用了文物,以允许Spinnaker存储有关其创建的对象的更多元数据。

您已通过 Halyard 将 Kubernetes 帐户添加到 Spinnaker. 您启用了 Kubernetes 提供商,配置了 RBAC 角色,并将当前的 kubectl 配置添加到 Spinnaker,从而为提供商添加了帐户。

步骤 2 – 将空间配置为底层存储

在本节中,您将配置Space作为Spinnaker部署的底层存储空间,Spinnaker将使用Space来存储其配置和管道相关数据。

要在 Halyard 中配置 S3 存储,请运行以下命令:

1hal 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_keyspaces_endpoint_with_region_prefix代替你的空间的终端点,这通常是region-id.digitaloceanspaces.com,其中region-id是你的空间的区域。你可以代替space_name代替你的空间的名称。--no-validate旗帜告诉Hayard不要立即验证设置,因为不支持DigitalOcean Spaces验证。

一旦你运行了这个命令,Hayard会要求你提供你的秘密访问密钥. 输入它以继续,然后你会看到以下输出:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Get persistent store
5  Success
6+ Edit persistent store
7  Success
8+ Successfully edited persistent store "s3".

现在你已经配置了s3存储,你会通过运行以下命令确保你的部署将使用它作为其存储:

1hal config storage edit --type s3

结果将是这样的:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Get persistent storage settings
5  Success
6+ Edit persistent storage settings
7  Success
8+ Successfully edited persistent storage.

您已将 Spinnaker 部署到您的 Kubernetes 集群中,并使用 Nginx Ingress 控制器将其曝光到您的域。

步骤 3 – 部署 Spinnaker 到您的集群

在本节中,您将使用 Halyard 部署 Spinnaker 到您的群集中,然后使用 Nginx Ingress 将其 UI 和 API 组件暴露在您的域中。 首先,您将配置您的域 URL:一个用于 Spinnaker 的用户界面和一个用于 API 组件。

首先,您需要在 Halyard 中编辑 Spinnaker 的 UI 和 API URL 配置值,并将其设置为您想要的域。

1hal config security api edit --override-base-url https://spinnaker-api.example.com

结果将看起来像:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Get API security settings
5  Success
6+ Edit API security settings
7  Success
8...

要将 UI 终端设置为您的域,这就是您将访问 Spinnaker 的位置,运行:

1hal config security ui edit --override-base-url https://spinnaker.example.com

结果将看起来像:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Get UI security settings
5  Success
6+ Edit UI security settings
7  Success
8+ Successfully updated UI security settings.

请记住,用您的域代替spinnaker-api.example.comspinnaker.example.com。这些是您在 Nginx Ingress 控制器前提条件下创建的负载平衡器上指定的域。

您已经创建并保护了 Spinnaker 的 Kubernetes 帐户,将您的 Space 配置为其底层存储,并将其 UI 和 API 终端设置为您的域。

1hal version list

您的输出将显示可用的版本列表. 在写这篇文章的时刻,‘1.13.5’是最新版本:

 1[secondary_label Output]
 2+ Get current deployment
 3  Success
 4+ Get Spinnaker version
 5  Success
 6+ Get released versions
 7  Success
 8+ You are on version "", and the following are available:
 9 - 1.11.12 (Cobra Kai):
10   Changelog: https://gist.GitHub.com/spinnaker-release/29a01fa17afe7c603e510e202a914161
11   Published: Fri Apr 05 14:55:40 UTC 2019
12   (Requires Halyard >= 1.11)
13 - 1.12.9 (Unbreakable):
14   Changelog: https://gist.GitHub.com/spinnaker-release/7fa9145349d6beb2f22163977a94629e
15   Published: Fri Apr 05 14:11:44 UTC 2019
16   (Requires Halyard >= 1.11)
17 - 1.13.5 (BirdBox):
18   Changelog: https://gist.GitHub.com/spinnaker-release/23af06bc73aa942c90f89b8e8c8bed3e
19   Published: Mon Apr 22 14:32:29 UTC 2019
20   (Requires Halyard >= 1.17)

要选择要安装的版本,请运行以下命令:

1hal config version edit --version 1.13.5

建议始终选择最新版本,除非您遇到某种回归。

您将看到以下结果:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Edit Spinnaker version
5  Success
6+ Spinnaker has been configured to update/install version "version".
7  Deploy this version of Spinnaker with `hal deploy apply`.

您现在已经完全配置了 Spinnaker 的部署,您将使用以下命令部署它:

1hal deploy apply

这个命令可能需要几分钟才能完成。

最终的结果将是这样的:

 1[secondary_label Output]
 2+ Get current deployment
 3  Success
 4+ Prep deployment
 5  Success
 6+ Preparation complete... deploying Spinnaker
 7+ Get current deployment
 8  Success
 9+ Apply deployment
10  Success
11+ Deploy spin-redis
12  Success
13+ Deploy spin-clouddriver
14  Success
15+ Deploy spin-front50
16  Success
17+ Deploy spin-orca
18  Success
19+ Deploy spin-deck
20  Success
21+ Deploy spin-echo
22  Success
23+ Deploy spin-gate
24  Success
25+ Deploy spin-rosco
26  Success
27...

Halyard 正在向您展示 Spinnaker 的每个微服务的部署状态. 在场景后面,它会调用 kubectl 来安装它们。

Kubernetes 将花费一些时间 - 平均10分钟 - 将所有容器带上,特别是第一次。

1kubectl get pods -n spinnaker -w

您已将 Spinnaker 部署到您的 Kubernetes 集群中,但无法在您的集群之外访问。

您将存储 ingress 配置到名为 spinnaker-ingress.yaml 的文件中. 使用您的文本编辑器创建它:

1nano spinnaker-ingress.yaml

添加以下几行:

 1[label spinnaker-ingress.yaml]
 2apiVersion: extensions/v1beta1
 3kind: Ingress
 4metadata:
 5  name: spinnaker-ingress
 6  namespace: spinnaker
 7  annotations:
 8    kubernetes.io/ingress.class: nginx
 9    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
10spec:
11  tls:
12  - hosts:
13    - spinnaker-api.example.com
14    - spinnaker.example.com
15    secretName: spinnaker
16  rules:
17  - host: spinnaker-api.example.com
18    http:
19      paths:
20      - backend:
21          serviceName: spin-gate
22          servicePort: 8084
23  - host: spinnaker.example.com
24    http:
25      paths:
26      - backend:
27          serviceName: spin-deck
28          servicePort: 9000

请记住,用 API 域代替spinnaker-api.example.com,用 UI 域代替spinnaker.example.com

配置文件定义了一种名为spinnaker-ingress的入口,注释指出,此入口的控制器将是 Nginx 控制器,而letsencrypt-prod集群发行商将生成预先教程中定义的 TLS 证书。

然后,它指定了 TLS 将确保 UI 和 API 域名。它通过将 API 域名导向到Spinnaker API 容器服务(Spinnaker API 容器),并将 UI 域名导向到Spinnaker UI 容器服务(Spinnaker UI 容器)在相应的端口80849000

保存并关闭文件。

在 Kubernetes 中创建 Ingress 运行:

1kubectl create -f spinnaker-ingress.yaml

您将看到以下输出:

1[secondary_label Output]
2ingress.extensions/spinnaker-ingress created

等待几分钟,让 Let’s Encrypt 提供 TLS 证书,然后在浏览器中导航到您的 UI 域名,‘spinnaker.example.com’.您将看到 Spinnaker 的用户界面。

Spinnaker's home page

您已部署 Spinnaker 到您的集群中,在您的域中曝光了 UI 和 API 组件,并测试了它是否有效,现在您将在 Spinnaker 中创建应用程序,并运行管道来部署Hello World应用程序。

步骤 4 – 创建应用程序并运行管道

在本节中,您将使用您的域中的 Spinnaker 访问来创建一个应用程序,然后创建并运行一个管道来部署一个 Hello World 应用程序,可以在 paulbouwer/hello-kubernetes找到。

在右上角,按一下 Action,然后选择 Create Application. 你会看到 New Application表格。

Creating a new Application in Spinnaker

输入Hello-world作为名字,输入您的电子邮件地址,然后按 Create

当页面加载时,通过点击顶部菜单中的第一个选项卡来导航到 ** 管道 ** 您将看到尚无定义的管道。

No pipelines defined in Spinnaker

点击设置新管道并打开新表单。

Creating a new Pipeline in Spinnaker

填写部署Hello World应用程序作为你的管道名称,然后按 Create

在下一页上,点击 添加阶段按钮.作为 Type,选择 Deploy (Manifest),用于部署您指定的Kubernetes表达式。对于 Stage Name,键入 Deploy Hello World。向下滚动,在 Manifest Configuration下面的文本框中,输入以下行:

 1[label Manifest Configuration]
 2apiVersion: extensions/v1beta1
 3kind: Ingress
 4metadata:
 5  name: hello-world-ingress
 6  namespace: spinnaker
 7  annotations:
 8    kubernetes.io/ingress.class: nginx
 9    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
10spec:
11  tls:
12  - hosts:
13    - hello-world.example.com
14    secretName: hello-world
15  rules:
16  - host: hello-world.example.com
17    http:
18      paths:
19      - backend:
20          serviceName: hello-kubernetes
21          servicePort: 80
22---
23apiVersion: v1
24kind: Service
25metadata:
26  name: hello-kubernetes
27  namespace: spinnaker
28spec:
29  type: ClusterIP
30  ports:
31  - port: 80
32    targetPort: 8080
33  selector:
34    app: hello-kubernetes
35---
36apiVersion: apps/v1
37kind: Deployment
38metadata:
39  name: hello-kubernetes
40  namespace: spinnaker
41spec:
42  replicas: 3
43  selector:
44    matchLabels:
45      app: hello-kubernetes
46  template:
47    metadata:
48      labels:
49        app: hello-kubernetes
50    spec:
51      containers:
52      - name: hello-kubernetes
53        image: paulbouwer/hello-kubernetes:1.5
54        ports:
55        - containerPort: 8080

请记住,用您的域名替换hello-world.example.com,该域名也指向您的加载平衡器。

在此配置中,您定义了一个部署,由paulbouwer/hello-kubernetes:1.5图像的三个副本组成。

在屏幕的右下角按 ** 保存更改**。当它完成时,返回 ** 管道**.在右侧,选择您刚刚创建的管道,然后按 ** 开始手动执行 ** 链接。

这个管道需要很短的时间才能完成,一旦成功完成,你会看到进度栏完成。

Successfully ran a Pipeline

您现在可以导航到您在配置中定义的域,您将看到Spinnaker刚刚部署的Hello World应用程序。

Hello World App

你已经在 Spinnaker 中创建了一个应用程序,运行了一个管道来部署一个Hello World应用程序,并访问了它. 在下一步,你将通过启用 GitHub 组织授权来保护 Spinnaker。

步骤 5 – 允许基于角色的访问与 GitHub 组织

在本节中,您将启用 GitHub OAuth 身份验证和 GitHub 组织权限。 允许 GitHub OAuth 身份验证迫使 Spinnaker 用户通过 GitHub 登录,从而防止匿名访问。 通过 GitHub 组织权限只限制访问到组织中的成员。

要使 OAuth 身份验证工作,您首先需要设置权限回调 URL,这是用户在授权后将被重定向的地方。这是您的 API 域名以 /login 结束。

1hal config security authn oauth2 edit --pre-established-redirect-uri https://spinnaker-api.example.com/login

你会看到这个结果:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Get authentication settings
5  Success
6+ Edit oauth2 authentication settings
7  Success
8+ Successfully edited oauth2 method.

要使用 GitHub 设置 OAuth 身份验证,您需要为您的组织创建一个 OAuth 应用程序。 要做到这一点,请前往 GitHub 上的您的组织,到 Settings,点击 Developer Settings,然后从左侧菜单中选择 OAuth Apps

Creating a new OAuth App on GitHub

请输入Homepage URL,输入https://spinnaker.example.com,输入Authorization callback URL,输入https://spinnaker-api.example.com/login.然后按注册申请

请注意 客户端ID客户端秘密值 - 您将需要它们用于下一个命令。

通过创建 OAuth 应用程序,您可以通过运行以下命令来配置 Spinnaker 使用 OAuth 应用程序:

1hal config security authn oauth2 edit --client-id client_id --client-secret client_secret --provider GitHub

请记住,用 GitHub 设置页面上显示的值代替client_idclient_secret

你的输出将是相似的如下:

 1[secondary_label Output]
 2+ Get current deployment
 3  Success
 4+ Get authentication settings
 5  Success
 6+ Edit oauth2 authentication settings
 7  Success
 8Problems in default.security.authn:
 9- WARNING An authentication method is fully or partially
10  configured, but not enabled. It must be enabled to take effect.
11
12+ Successfully edited oauth2 method.

您已配置 Spinnaker 以使用 OAuth 应用程序. 现在,要启用它,执行:

1hal config security authn oauth2 enable

结果将看起来像:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Edit oauth2 authentication settings
5  Success
6+ Successfully enabled oauth2

您已经配置并启用了 GitHub OAuth 身份验证,现在用户将被迫通过 GitHub 登录以访问 Spinnaker. 但是,现在,任何拥有 GitHub 帐户的人都可以登录,这不是你想要的。

您需要通过本地 config 文件半手动设置此设置,因为 Halyard 还没有设置此设置的命令。

Halyard 在 ~/.hal/default/profiles/ 下寻找自定义配置。 名为 `service-name-*.yml’ 的文件由 Halyard 收集,用于取代特定服务的设置。

~/.hal/default/profiles/ 中创建一个名为 gate-local.yml 的文件:

1nano ~/.hal/default/profiles/gate-local.yml

添加以下几行:

1[label gate-local.yml]
2security:
3 oauth2:
4   providerRequirements:
5     type: GitHub
6     organization: your_organization_name

your_organization_name替换为您的 GitHub 组织名称,保存并关闭文件。

有了这个配置,只有你的GitHub组织的成员才能访问Spinnaker。

<$>[注] 注: 只有你 GitHub 组织的会员会员设置为 公共,才能登录 Spinnaker。

现在,您将 Spinnaker 与一个更具体的访问规则解决方案集成:GitHub Teams. 这将允许您指定哪些团队(团队)将访问 Spinnaker 中创建的资源,例如应用程序。

要做到这一点,您需要在您的组织中为管理员帐户创建一个 GitHub 个人访问令牌。 要创建一个,请访问 个人访问令牌并按下 Generate New Token 按钮。 在下一页上,给出您选择的描述,并确保检查 read:org 范围,位于 admin:org 下面。

要在 Spinnaker 中配置 GitHub 团队角色授权,请运行以下命令:

1hal config security authz github edit --accessToken access_token --organization organization_name --baseUrl https://api.github.com

请确保用您生成的个人访问代码代替access_token,并用组织的名称代替organization_name

产量将是:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Get GitHub group membership settings
5  Success
6+ Edit GitHub group membership settings
7  Success
8+ Successfully edited GitHub method.

您已更新您的 GitHub 组设置,现在,您将通过运行以下命令将授权提供商设置为 GitHub:

1hal config security authz edit --type github

结果将看起来像:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Get group membership settings
5  Success
6+ Edit group membership settings
7  Success
8+ Successfully updated roles.

更新这些设置后,通过运行启用它们:

1hal config security authz enable

您将看到以下输出:

1[secondary_label Output]
2+ Get current deployment
3  Success
4+ Edit authorization settings
5  Success
6+ Successfully enabled authorization

有了所有更改,您现在可以将更改应用到运行 Spinnaker 部署中。

1hal deploy apply

一旦完成,等待Kubernetes传播更改,这可能需要一段时间,您可以通过运行来观察进展:

1kubectl get pods -n spinnaker -w

当所有 pods 状态变成运行和可用性1/1,导航到您的 Spinnaker UI 域。您将被重定向到 GitHub,并被要求登录,如果您尚未登录,如果您登录的帐户是组织的成员,您将被重定向到 Spinnaker 并登录。

1{"error":"Unauthorized", "message":"Authentication Failed: User's provider info does not have all required fields.", "status":401, "timestamp":...}

GitHub Teams 整合的效果是 Spinnaker 现在将它们翻译成 roles. 你可以在 Spinnaker 中使用这些 角色 来纳入特定团队成员的访问额外限制。

您还配置了 Spinnaker 以限制您的组织成员的访问,了解了角色和权限,并考虑了 GitHub 团队在与 Spinnaker 集成时的位置。

结论

您已成功配置并部署 Spinnaker 到您的 DigitalOcean Kubernetes 集群中。您现在可以更轻松地管理和使用云资源,从一个中心位置。 您可以使用触发器自动启动管道;例如,当新 Docker 图像被添加到注册表中时。 有关 Spinnaker 的条款和架构的更多信息,请访问 官方文档. 如果您希望在您的集群中部署私有 Docker 注册表以保留您的图像,请访问 如何在 DigitalOcean Spaces 上设置私有 Docker 注册表并使用它与 DO Kubernetes

Published At
Categories with 技术
comments powered by Disqus