思科与AWS合作推出Kubernetes混合云解决方案

对于采用 DevOps 实践和现代云能力来加速创新和获得竞争优势的组织来说,其中一个最大的挑战是,在应用程序从开发到部署的整个生命周期中维护通用、一致的环境。容器解决了将所有必要的依赖项打包成离散镜像的应用程序可移植性问题,而 Kubernetes 已经成为编排和部署这些容器事实上的标准。
通过采用容器和 Kubernetes,IT 和业务线用户可以将精力集中在应用程序开发上,而不是基础设施和“管道”上。因为 Kubernetes 无处不在,所以可以根据业务需求选择运行应用程序的最佳位置。对于某些应用程序,公有云的规模和覆盖范围以及其提供的数量巨大的服务,将成为决定因素。对于其他应用程序,数据局部性、安全性或其他考虑则要求在本地部署。
当前的解决方案可能很复杂,需要组织横跨隔离或独立的环境开展工作,并迫使团队以时间和金钱为代价将所有部分“粘合”在一起。这可能会迫使组织在本地部署和公有云之间做出选择,或者受限于“全有或全无”的技术栈,从而导致选择较少。
思科为了帮助客户应对这一挑战,于 11 月 8 日宣布与 AWS 合作,开发思科 Kubernetes on AWS 混合解决方案。新的解决方案结合了思科、AWS 和开源技术,简化了复杂性,消除了客户转向 Kubernetes 的挑战,使他们能够以安全、一致的方式横跨本地和 AWS 云部署应用程序。它提供了一个经过测试、验证的简单解决方案,在本地和云端提供了一致的 Kubernetes 集群,并结合了两者的优势。这减少了不同团队在人员、流程和技能方面的负担,缩短了应用程序部署周期,可以加速创新。客户可以将本地功能和资源扩展到 AWS 云上,也可以在本地利用 AWS 云提供的服务和资源。

解决方案概述

思科 Kubernetes on AWS 混合解决方案的核心组件是Cisco Container Platform和 Amazon Elastic Container Service for Kubernetes(EKS)的独特集成,这样,通过一个 CCP 管理界面,客户就可以配置本地集群和云端 EKS 集群。CCP 使用 AWS IAM 身份验证创建 VPC,向 EKS 发送指令创建一个新的集群,然后配置该集群中的工作节点。
借助思科 Kubernetes on AWS 混合解决方案,除了本地环境外,客户还可以使用 CCP UI 在 Amazon AWS 上启动 Kubernetes 集群。他们只要简单地声明他们的 Kubernetes 集群规范,并引用思科托管的操作系统镜像作为工作节点镜像,就可以在任意一个环境中部署集群。AWS 身份和访问管理(IAM)被集成进来,作为通用的身份验证机制。这样,集群管理员就可以自由地在两个环境中应用相同的基于角色的访问控制(RBAC)策略。这两个环境都集成了 Amazon Elastic Container Registry(ECR),为所有的容器镜像提供了统一安全的存储库。为了提供一致的日志记录和度量指标,一套标准的开源监控和日志工具被部署到集群中。这些工具是基于 Prometheus 和 ElasticSearch/FluentD/Kibana(EFK) 技术栈的。最后,思科的站点到站点 VPN 解决方案,如CSR 1000v,被用来在云托管服务和本地服务之间提供一系列安全连接选项。
思科为解决方案的所有组件(包括 AWS 组件—EKS、IAM 和 ECR)提供了单点支持,用户不必为每个组件单独从不同的供应商寻求支持。
使用思科容器平台在 Amazon EKS 中和本地配置 Kubernetes 集群
为了了解实际使用的情况,让我们来看看管理员如何使用思科容器平台(CCP)仪表板创建一个 EKS 集群。
配置一个 EKS 集群非常简单,只需要点击几个按钮。首先,将 AWS 定义为基础设施提供商。这包括提供商名称AWS 帐户凭证
注意:这里指定的 AWS 帐户凭证将是具有 EKS 集群管理权限的 AWS IAM 身份标识。
接下来,指定 Amazon EKS 集群的基本信息。这包括你希望部署 EKS 集群的 AWS 区域、一个可选的 IAM 用户或角色(你希望使该用户可以管理 EKS 集群)、集群名称和集群的 Kubernetes 版本
最后,配置 EKS 工作节点的信息。这包括实例类型机器镜像工作节点数量公共 SSH 密钥
这样就行了。在后台,CCP 会使用 Amazon API 配置下列资源:
按照 AWS 最佳实践在你的账户下配置一个新的 VPC(包括子网、安全组、路由表等),并按照思科的建议配置安全的私有和公有子网,用于 VPN 互连;
一个用于 EKS 的服务角色;
一个用于 EKS 工作节点的节点实例配置文件;
一个 EKS 集群;
一个 EKS 工作节点自动缩放组;
在你的集群上创建 configMap,使工作节点可以连接到主节点。
集群部署完成后,就可以下载预生成的 Kubernetes 集群配置文件(~/.kube/config)。CCP 使用了开源的 kubectl 插件aws-iam-authenticator。该插件使用本地文件~/.aws/credentials中的凭证通过 EKS 集群对 AWS IAM 用户进行身份验证。
对于由 CCP 部署和管理的 Kubernetes 本地集群,该解决方案提供了与 Amazon Cloud 的集成。作为与 AWS 集成的一部分,你现在可以选择“启用 AWS IAM”选项,它将在新创建的 Kubernetes 本地集群中安装 AWS IAM 身份验证组件。这使你可以使用同一套 AWS IAM 凭据来访问 Kubernetes 集群(既包括本地集群,也包括 EKS 集群)。
借助在云环境和本地环境中配置的集群,让我们更深入地了解下思科 Kubernetes on AWS 混合解决方案中的每一项 AWS 集成。
具有通用 RBAC 授权策略的通用 IAM 身份验证标识
CCP 使用了开源的AWS IAM 身份验证程序,使用一个通用的 AWS IAM 用户 / 角色在云环境和本地环境中进行集群身份验证。用户 / 角色通过集群验证后,一个可配置的通用 RBAC 策略就会定义在各自集群中可以授予用户 / 角色的特定权限。因此,你必须使用一种通用的“kubectl” CLI 工具简单地切换上下文来访问这两个环境。
默认情况下,在创建 Amazon EKS 集群时指定的 AWS 凭证会映射到 Kubernetes 集群角色’cluster-admin’ (“system:managers”组集群角色绑定)。这个 IAM 身份可以管理控制 EKS 集群。如前所述,你可以选择将另外的 AWS IAM 角色或 IAM 用户指定为 Amazon 资源名(ARN)。当你指定时,CCP:
1 )  在 EKS 集群的 configMap 中映射另外一个相关联的角色,如下图所示:
2)  向 kube config 中添加关联角色,以便 AWS IAM 身份验证程序可以使用那个角色进行 EKS 集群验证,如下所示:
对于本地集群,你可以启用 AWS IAM 集成,使用相同的 IAM 身份进行集群身份验证。这可以通过在本地集群创建过程中指定 AWS IAM 用户的 ARN 来实现。类似地,CCP 会将该用户映射到本地集群 configMap 中的 Kubernetes 集群角色’ cluster-admin '。它还更新了本地集群的 kubeconfig,这反过来使得 AWS IAM 身份验证程序客户端可以使用相同的 IAM 身份进行本地集群身份验证。
通过如上所述的 IAM 配置,就可以把一个通用的 RBAC 策略应用于 Kubernetes 本地 /EKS 集群,实现对资源的访问控制。
通用 Amazon ECR
CCP 与 ECR 集成,为所有容器镜像提供了一个统一安全的存储库。
对于 Amazon EKS 工作节点,CCP 会自动分配一个实例角色,该角色具有读 / 写 ECR 存储库的权限。
由于本地节点没有这种角色,因此需要执行额外的步骤——凭证必须保存在 Kubernetes secret 中,而后者会被 pod 清单引用(参见下图)。像下面这样的脚本将为你完成这项工作(根据需要替换[]中的项)。
这个脚本从 AWS 获取授权令牌,并将其存储在一个 Kubernetes secret 对象中,pod 部署期间会读取它。注意,这个令牌需要定期刷新。默认情况下,令牌 12 小时后到期。
在执行完上面的脚本之后,就像往常一样,你可以通过 kubectl 部署一个 Kubernetes 清单指定 ECR 库的相关细节。下面的 pod 清单示例说明了如何在 image 属性中指定应用程序使用的 ECR 库。
要从 ECR 中获取镜像,必须提供凭据。亚马逊的 ECR 文档对此进行了描述。对于运行 Docker 的用户,它看起来是下面这个样子(需要 ecr:GetAuthorizationToken 权限),而 Kubernetes 将使用存储在 Kubernetes secret 中的凭据,就像前面所描述的那样,在 pod 清单的“imagePullSecret”中指定。
借助 CCP,你可以使用相同的 Kubernetes 版本和操作系统部署本地和 Amazon EKS 工作节点。
开始的时候,你可以使用 Kubernetes v1.10 与 Ubuntu 18.04 部署工作节点,使用思科提供的镜像。你不需要担心 Kubernetes 及操作系统版本在孤立的环境之间出现不一致。借助 CCP 控制平面软件,你可以横跨本地环境和 AWS 环境无缝地升级及应用安全补丁。
通用监控和日志
CCP 通过由 CPP 在每个集群中部署的 Prometheus 和 EFK 技术栈(ElasticSearch/ FluentD/ Kibana)集成集群监控,确保每个集群符合开发数据和生产数据隔离的最佳实践,以及 GDPR 把信息留在本地的要求。它还确保日志和指标不依赖于可能不可用的中央服务。思科服务可以帮助实现日志转发和主要指标收集以及集成客户自己的日志和指标系统。

连接、安全和监控的增值集成

思科扩展了跨组合解决方案,提供了一系列可以从 AWS 市场加以利用的增值解决方案,从而完善思科 Kubernetes on AWS 混合解决方案。这包括:
应用程序部署:使用思科 CloudCenter在私有和公共基础设施中安全地部署 Kubernetes 和基于虚拟机的工作负载。
连接:使用思科 CSR1000v 在本地环境和云环境之间建立 VPN 连接。
安全:部署思科Stealthwatch监控网络流量及应用程序流量异常,把 AWS 流日志用于基于云的工作负载。
监控:支持 AppDynamics 应用程序性能监控,查看应用程序性能对业务结果的实时影响。

下一步工作

思科 Kubernetes on AWS 混合解决方案可以作为一个包含所有思科组件的软硬件包购买,也可以通过思科或思科的合作伙伴单独购买。在购买解决方案时,只有 Cisco 容器平台是必须的。所有的思科软件组件都是按 1 年、3 年和 5 年的订阅许可订购的,所有的思科硬件组件都是永久出售的。所有 AWS 组件都直接向客户的 AWS 帐户收费。
关于如何使用思科 Kubernetes on AWS 混合解决方案部署思科扩展组合解决方案的详细说明,可以查看它们的多重云设计指南
要了解思科 Kubernetes on AWS 混合解决方案的实践经验,请移步DevNet
 写留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。