我的意思是,我有一个已经 dockerized 的应用程序,我可以提供一个 cloudformation 模板来将它部署到我客户端的 EKS 集群上吗?
3 回答
我使用 Cloudformation 已经有一段时间了,但是我从来没有用它来部署 Kubernetes 工件(而且我迄今为止从未听说过其他任何人)。我认为有办法做到这一点(请参阅AWS 博客),但即使是这个解决方案似乎也是基于 Helm。
我绝对会推荐在您的用例中使用 Helm 图表。Helm 图表直观且易于使用,尤其是在您已经知道要部署的 Kubernetes 对象的情况下。
使用模块化和可扩展的 Amazon EKS 架构快速入门部署 Amazon EKS 集群。部署 Amazon EKS 集群后,在输出选项卡上,记下以下输出。
- HelmLambdaArn
- KubeClusterName
- KubeConfigPath
- KubeGetLambdaArn
下面的模板安装WordPress Helm 图表,就像您登录到 Kubernetes 集群并运行以下命令一样。
掌舵安装稳定/wordpress
模板的以下部分展示了如何使用 Helm 来部署 WordPress。它还会创建一个负载均衡器主机名,以便您可以访问 WordPress 站点。
Resources:
HelmExample:
Type: "Custom::Helm"
Version: '1.0'
Description: 'This deploys the Helm Chart to deploy wordpress in to the EKS Cluster.'
Properties:
ServiceToken: !Ref HelmLambdaArn
KubeConfigPath: !Ref KubeConfigPath
KubeConfigKmsContext: !Ref KubeConfigKmsContext
KubeClusterName: !Ref KubeClusterName
Namespace: !Ref Namespace
Chart: stable/wordpress
Name: !Ref Name
Values:
wordpressUsername: !Ref wordpressUsername
wordpressPassword: !Ref wordpressPassword
WPElbHostName:
DependsOn: HelmExample
Type: "Custom::KubeGet"
Version: '1.0'
Properties:
ServiceToken: !Ref KubeGetLambdaArn
KubeConfigPath: !Ref KubeConfigPath
KubeConfigKmsContext: !Ref KubeConfigKmsContext
Namespace: !Ref Namespace
Name: !Sub 'service/${Name}-wordpress'
JsonPath: '{.status.loadBalancer.ingress[0].hostname}'
修改 helm 图表以适合您的应用程序,并使用您之前从输出中获得的值修改 cloudformation 模板。这些是部署 cloudformation 模板时必须填写的参数:
- HelmLambdaArn
- KubeClusterName
- KubeConfigPath
- KubeGetLambdaArn
- 命名空间
- 姓名
您可以使用 cdk8s.io。这里有一些例子:https ://github.com/awslabs/cdk8s/tree/master/examples