如何从 Azure DevOps 部署到 AWS Kubernetes
How to deploy to AWS Kubernetes from Azure DevOps
我正在使用 Azure DevOps 来处理 PBI、存储库、PRS 和构建,但我的所有基础设施(包括 Kubernetes)都由 AWS 管理。
没有关于如何使用 Azure DevOps 任务部署到 AWS EKS 的文档,也没有"the right and easy way"。
我发现 this solution,这是一个很好的解决方案,但如果知道你们是如何解决它的,或者如果有更多的方法,那就太棒了。
经过研究、尝试和失败后,我找到了另一种方法,无需乱用 shell 脚本。
您只需将以下内容应用到 Kubernetes,它将创建一个 ServiceAccount 并将其绑定到一个自定义角色,该角色将拥有 create/delete 部署和 pods(调整它服务权限)。
deploy-robot-conf.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: deploy-robot
automountServiceAccountToken: false
---
apiVersion: v1
kind: Secret
metadata:
name: deploy-robot-secret
annotations:
kubernetes.io/service-account.name: deploy-robot
type: kubernetes.io/service-account-token
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: deploy-robot-role
namespace: default
rules: # ## Customize these to meet your requirements ##
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["create", "delete"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["create", "delete"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: global-rolebinding
namespace: default
subjects:
- kind: ServiceAccount
name: deploy-robot
namespace: default
roleRef:
kind: Role
name: deploy-robot-role
apiGroup: rbac.authorization.k8s.io
这将具有 Azure DevOps 能够部署到集群所需的最低权限。
注意:请调整角色资源的规则以满足您的需要,例如服务资源权限。
然后转到您的发布并创建一个 Kubernetes 服务连接:
填写方框,然后按照从服务帐户获取密码所需的步骤进行操作,请记住,如果您没有更改 yaml 文件,那是 deploy-robot .
然后只需使用您的 Kubernetes 连接:
另一种选择是使用基于 'kubeconf' 的身份验证,其中可以使用以下 AWS CLI 命令获取 'kubeconf' 文件:
aws eks --region region update-kubeconfig --name cluster_name --kubconfig ~/.kube/AzureDevOpsConfig
我正在使用 Azure DevOps 来处理 PBI、存储库、PRS 和构建,但我的所有基础设施(包括 Kubernetes)都由 AWS 管理。
没有关于如何使用 Azure DevOps 任务部署到 AWS EKS 的文档,也没有"the right and easy way"。
我发现 this solution,这是一个很好的解决方案,但如果知道你们是如何解决它的,或者如果有更多的方法,那就太棒了。
经过研究、尝试和失败后,我找到了另一种方法,无需乱用 shell 脚本。
您只需将以下内容应用到 Kubernetes,它将创建一个 ServiceAccount 并将其绑定到一个自定义角色,该角色将拥有 create/delete 部署和 pods(调整它服务权限)。
deploy-robot-conf.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: deploy-robot
automountServiceAccountToken: false
---
apiVersion: v1
kind: Secret
metadata:
name: deploy-robot-secret
annotations:
kubernetes.io/service-account.name: deploy-robot
type: kubernetes.io/service-account-token
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: deploy-robot-role
namespace: default
rules: # ## Customize these to meet your requirements ##
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["create", "delete"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["create", "delete"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: global-rolebinding
namespace: default
subjects:
- kind: ServiceAccount
name: deploy-robot
namespace: default
roleRef:
kind: Role
name: deploy-robot-role
apiGroup: rbac.authorization.k8s.io
这将具有 Azure DevOps 能够部署到集群所需的最低权限。
注意:请调整角色资源的规则以满足您的需要,例如服务资源权限。
然后转到您的发布并创建一个 Kubernetes 服务连接:
填写方框,然后按照从服务帐户获取密码所需的步骤进行操作,请记住,如果您没有更改 yaml 文件,那是 deploy-robot .
然后只需使用您的 Kubernetes 连接:
另一种选择是使用基于 'kubeconf' 的身份验证,其中可以使用以下 AWS CLI 命令获取 'kubeconf' 文件:
aws eks --region region update-kubeconfig --name cluster_name --kubconfig ~/.kube/AzureDevOpsConfig