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

Spinnaker是一个开源资源管理和持续交付应用程序,可使用功能强大且可自定义的管道系统实现快速,安全和可重复的部署。 Spinnaker允许自动化应用程序部署到许多平台,包括DigitalOcean Kubernetes。在本教程中,您将使用Halyard将Spinnaker部署到DigitalOcean Kubernetes,并将DigitalOcean Spaces作为底层后端存储。

作者选择了自由和开源基金作为Write for DOnations计划的一部分进行捐赠。

介绍

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的加密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 Ingress控制器和证书管理器。 有关如何执行此操作的指南,请参阅如何在DigitalOcean Kubernetes上使用Cert-Manager设置Nginx Ingress

  • 具有API密钥的DigitalOcean空间(访问和秘密)。 要创建DigitalOcean Space和API密钥,请参阅如何创建DigitalOcean Space和API密钥

  • 具有三个DNS A记录的域名指向Ingress使用的DigitalOcean负载均衡器。 如果您使用DigitalOcean管理域的DNS记录,请参阅如何创建DNS记录以创建A记录。 在本教程中,我们将A记录称为spinnaker.example.comspinnaker-api.example.comhello-world.example.com

  • GitHub帐户,添加到具有管理员权限和公共可见性的GitHub组织。 该帐户还必须是组织中团队的成员。 这是完成第5步所必需的。

第1步 - 使用Halyard添加Kubernetes帐户

在本节中,您将通过Halyard向Spinnaker添加Kubernetes帐户。 Spinnaker的术语中的帐户是用于访问云提供商的命名凭据。

作为先决条件的一部分,您创建了echo1echo2服务以及用于测试目的的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

您将收到以下输出:

+ 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权限,以允许它控制整个集群。 如果您希望创建更具限制性的环境,请参阅RBAC上官方Kubernetes文档

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

kubectl create ns spinnaker

输出结果如下:

namespace/spinnaker created

运行以下命令以创建名为spinnaker-service-account

kubectl create serviceaccount spinnaker-service-account -n spinnaker

您已使用-n标志指定kubectlspinnaker名称空间中创建服务帐户。 输出将是:

serviceaccount/spinnaker-service-account created

然后,将其绑定到cluster-admin角色:

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

您将看到以下输出:

clusterrolebinding.rbac.authorization.k8s.io/spinnaker-service-account created

Halyard使用本地kubectl来访问集群。 在部署Spinnaker之前,您需要将其配置为使用新创建的服务帐户。 Kubernetes帐户使用用户名和令牌进行身份验证。 创建服务帐户后,Kubernetes会创建一个新密码并使用帐户令牌填充它。 要检索spinnaker-service-account的令牌,您首先需要获取该秘密的名称。 您可以通过运行以下TOKEN_SECRET将其提取到名为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中使用该TOKEN 接下来,您需要在kubectl中设置服务帐户的凭据:

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

您将看到以下输出:

User "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

输出将如下所示:

+ Get current deployment
  Success
+ Add the spinnaker-account account
  Success
+ Successfully added account spinnaker-account for provider
  kubernetes.

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

通常,Spinnaker可以通过两种方式部署:分布式安装或本地安装。 分布式安装是您在本教程中完成的 - 您将其部署到云中。 另一方面, 本地安装意味着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向Spinnaker添加了Kubernetes帐户。 您启用了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

请记住使用Space访问键替换your_space_access_key ,并使用Space的端点替换your_space_access_key 这通常是region-id .digitaloceanspaces.com ,其中region-id是您的Space的区域。 您可以将space_name替换为Space的名称。 --no-validate标志告诉Halyard不要立即验证给定的设置,因为不支持DigitalOcean Spaces验证。

一旦运行此命令,Halyard将询问您的秘密访问密钥。 输入它继续,然后您将看到以下输出:

+ Get current deployment
  Success
+ Get persistent store
  Success
+ Edit persistent store
  Success
+ Successfully edited persistent store "s3".

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

hal config storage edit --type s3

输出将如下所示:

+ 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组件。 首先,您将配置域名网址:一个用于Spinnaker的用户界面,另一个用于API组件。 然后,您将选择所需的Spinnaker版本并使用Halyard进行部署。 最后,您将创建一个入口并将其配置为Nginx控制器。

首先,您需要在Halyard中编辑Spinnaker的UI和API URL配置值,并将它们设置为您想要的域。 要将API端点设置为所需的域,请运行以下命令:

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

输出结果如下:

+ 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

输出结果如下:

+ Get current deployment
  Success
+ Get UI security settings
  Success
+ Edit UI security settings
  Success
+ Successfully updated UI security settings.

请记住将spinnaker-api.example.comspinnaker.example.com替换为您的域名。 这些是您在Nginx Ingress Controller先决条件期间创建的指向Load Balancer的域。

您已经创建并保护了Spinnaker的Kubernetes帐户,将您的Space配置为其底层存储,并将其UI和API端点设置为您的域。 现在您可以列出可用的Spinnaker版本:

hal version list

您的输出将显示可用版本的列表。 在撰写本文时, 1.13.5是最新版本:

+ 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

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

您将看到以下输出:

+ 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

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

最终输出将如下所示:

+ 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容器)以及在适当的端口80849000处的spin-deck服务(Spinnaker的UI容器)的UI域来设置路由。

保存并关闭文件。

通过运行以下命令在Kubernetes中创建Ingress:

kubectl create -f spinnaker-ingress.yaml

您将看到以下输出:

ingress.extensions/spinnaker-ingress created

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

Spinnaker的主页

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

第4步 - 创建应用程序并运行管道

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

导航到您已公开Spinnaker UI的域。 在右上角,按“ 操作” ,然后选择“ 创建应用程序” 您将看到新申请表。

在Spinnaker中创建新应用程序

键入hello-world作为名称,输入您的电子邮件地址,然后按“ 创建”

页面加载后,单击顶部菜单中的第一个选项卡导航到管道 您将看到尚未定义管道。

Spinnaker中没有定义管道

按下配置新管道 ,将打开一个新表单。

在Spinnaker中创建新的管道

填写Deploy Hello World Application作为管道名称,然后按Create

在下一页上,单击“ 添加阶段”按钮。 作为Type ,选择Deploy(Manifest) ,它用于部署您指定的Kubernetes清单。 对于Stage名称 ,键入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替换为您的域,该域也指向您的Load Balancer。

在此配置中,您定义一个Deployment ,由paulbouwer/hello-kubernetes:1.5的三个副本组成paulbouwer/hello-kubernetes:1.5图像。 您还可以定义Service以便能够访问它,并定义Ingress以在您的域中公开Service

按屏幕右下角的Save Changes 完成后,导航回Pipelines 在右侧,选择刚刚创建的管道,然后按“ 开始手动执行”链接。 要求确认时,请按“运行”

这条管道需要很短的时间才能完成。 成功完成后,您将看到进度条已完成。

成功运行了一条管道

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

Hello World App

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

第5步 - 使用GitHub组织启用基于角色的访问

在本节中,您将启用GitHub OAuth身份验证和GitHub组织授权。 启用GitHub OAuth身份验证会强制Spinnaker用户通过GitHub登录,从而阻止匿名访问。 通过GitHub授权组织限制只能访问组织中的人员。 GitHub组织可以包含团队 (命名的成员组),您可以使用它来进一步限制对Spinnaker中资源的访问。

要使OAuth身份验证起作用,您首先需要设置授权回调URL,这是用户在授权后将被重定向的位置。 这是以/login结尾的API域。 您需要手动指定此项以防止Spinnaker和其他服务猜测。 要配置它,请运行以下命令:

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

你会看到这个输出:

+ Get current deployment
  Success
+ Get authentication settings
  Success
+ Edit oauth2 authentication settings
  Success
+ Successfully edited oauth2 method.

要使用GitHub设置OAuth身份验证,您需要为组织创建OAuth应用程序。 为此,请在GitHub上导航到您的组织,转到“设置” ,单击“ 开发人员设置” ,然后从左侧菜单中选择OAuth应用程序 然后,单击右侧的“ 新建OAuth应用程序”按钮。 您将看到注册新的OAuth申请表。

在GitHub上创建一个新的OAuth应用程序

输入spinnaker-auth作为名称。 对于主页URL ,输入https:// spinnaker.example.com ,对于授权回调URL ,输入https:// spinnaker-api.example.com /login 然后,按注册申请

您将被重定向到新OAuth应用的设置页面。 请注意客户端ID客户端密钥值 - 您将需要它们用于下一个命令。

创建OAuth应用后,您可以通过运行以下命令将Spinnaker配置为使用OAuth应用:

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

请记住将client_idclient_secret替换为GitHub设置页面上显示的值。

您的输出将类似于以下内容:

+ 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

输出结果如下:

+ 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/ named gate-local.yml下创建一个文件:

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

添加以下行:

栅极 - local.yml
security:
 oauth2:
   providerRequirements:
     type: GitHub
     organization: your_organization_name

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

通过这一点配置,只有GitHub组织的成员才能访问Spinnaker。

注意:只有其成员身份设置为“ 公共 ”的GitHub组织成员才能登录Spinnaker。 可以在组织的成员列表页面上更改此设置。

现在,您将把Spinnaker与更具体的访问规则解决方案集成在一起:GitHub团队。 这将使您能够指定哪些团队可以访问在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替换为organization_name名称。

输出将是:

+ 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

输出结果如下:

+ Get current deployment
  Success
+ Get group membership settings
  Success
+ Edit group membership settings
  Success
+ Successfully updated roles.

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

hal config security authz enable

您将看到以下输出:

+ Get current deployment
  Success
+ Edit authorization settings
  Success
+ Successfully enabled authorization

完成所有更改后,您现在可以将更改应用于正在运行的Spinnaker部署。 执行以下命令来执行此操作:

hal deploy apply

完成后,等待Kubernetes传播更改。 这可能需要相当长的时间 - 您可以通过运行来观察进度:

kubectl get pods -n spinnaker -w

当所有pod的状态变为Running和availability 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一起使用


分享按钮