spinnaker对接AWS ECR

问题描述 当在使用 docker login 登录 ECR 时需要获取对应的密钥,而在 aws 中可以运行 aws ecr get-login 以获取登录的密钥。这里存在的问题是,AWS ECR 的密钥有效期是 12 小时,必须做到每 12 小时轮换一次。在配置时,就需要解决 clouddriver 可以实时使用最新密钥登录来获取镜像仓库中容器版本。那么问题就变成了:如何可以解决这个限制并允许 Spinnaker 与 AWS ECR 交互? 问题参考 ecr-token-refresh 在实施过程中,参考了 “Using AWS ECR with Spinnaker and Kubernetes” [1] 文章,这篇文章属于官方博客。在这里提到一个方法:“使用 sidecar 来间接刷新 aws ecr 密钥,来完成 clouddriver 可以正常获取密钥。 这里提到的一个项目 ”ecr-token-refresh“ [2] ,这是作者自己编写的一个程序,该程序会定期刷新 ecr 的身份验证令牌。 在参考这个项目实施时,官方提示是下面配置,但和其他传统的 spinnaker 镜像仓库的配置是相同的,要让 --password-file 是动态的。 bash 1 2 3 4 5 $ hal config provider docker-registry account add my-docker-registry \ --address https://<aws-account-number>....

 ·  · 

Spinnaker 基于判断的条件分支流水线

Manual Judgment Stage “Manual Judgment Stage” 是 Spinnaker Pipeline 中的一种阶段 (“Stage”) 类型,该类型可以作为流水线的门户,作为带外 (Out-of-Bound) 流水线检查,等待手动检查,并且判断结果会终止或继续流水线的执行。 创建一个基于Manual Judgment的流水线 创建一个流水线,添加一个新的 Stage,选择 “Manual Judgment” 图:Manual Judgment创建页面 Jugement Inputs 部分添加对应的选项,选项可以带入变量 $judgment 中 图:Manual Judgment 在执行时 Jugement Inputs Option 的展示 或者是不添加任何选项,那么这个时候就会只有 Stop 和 Continue 两个按钮 图:当 Manual Judgment 没有配置Jugement Inputs Option 的展示 如果添加了选项,可以根据 “选项” 来判断执行的分支 判断可以使用每个阶段内的条件表达式 ”Conditional on Expression“,或者 Check Precondition 类型的阶段 图:根据 “Stage Conditional on Expression” 来定义的选项 “Check Precondition” 是 Spinnaker 流水线中的一个阶段,它可以先前条件并且判断是否继续,这里主要检查该流水线之前所有的流水线你定义要检查的内容,并继续执行接下分支或者阶段 图:“Check Precondition” 的三种类型 图:“Check Precondition” 选择添加表达式的页面 这里选择使用 表达式 (Expression) 来判断前置条件,例如我判断前置 Stage 的选择是否为 “aaaa”...

 ·  · 

Spinnaker 自定义Pipeline模板思路

流水线模板组合思路 官方流水线示例中没有给出完整的流水线模板和完整的字段,只给出了一个大致的 schema [1],如下所示 json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 { "schema": "v2", "variables": [ { "type": "<type>", "defaultValue": <value>, "description": "<description>", "name": "<varName>" } ], "id": "<templateName>", # The pipeline instance references the template using this "protect": <true | false>, "metadata": { "name": "displayName", # The display name shown in Deck "description": "<description>", "owner": "example@example....

 ·  · 

初识Argo cd - 注册/删除k8s集群

登录argo cd bash 1 argocd login argocd_server:argocd_port_here 执行后输入admin/sercert bash 1 2 3 4 5 6 $ argocd login 10.0.0.5:30908 WARNING: server certificate had error: x509: cannot validate certificate for 10.0.0.5 because it doesn't contain any IP SANs. Proceed insecurely (y/n)? y Username: admin Password: 'admin:login' logged in successfully Context '10.0.0.5:30908' updated argocd cli 登录后的文件保存在 ~/.argocd/config 中 注册一个新集群 argocd 通过 kubectl 来获取集群的信息,所以 argocd 的主机上必须有 kubeconfig 文件 Note: KUBECONFIG 文件地址必须为实际路径,比如 ~/ 这种方式不可以...

 ·  · 

深入Argo - Application resources

在安装和注册集群完成后,就需要引入第一个概念 “Application”(如何管理所有我的应用程序?) 什么是 Application 什么是 ArgoCD “Application”? 对于 ArgoCD “Application”的快速解释:它是托管 ArgoCD 部署的 Kubernetes 集群 CRD 包含了应用程序的所有设置,如: 要部署到哪个集群? 与哪个 Git 存储库进行同步? 其他部署设置 应用程序的 YAML 包含了部署您的存储库资源所需的所有信息,充当了在 ArgoCD 中管理应用程序的关键控制点。 Reference ​[1] docs/operator-manual/argocd-cm.yaml ​[2] Getting started with multi-cluster K8S deployments using Argo CD ​[3] https://medium.com/notive/managing-argocd-application-resources-1b2b4742ab90

 ·  ·