摘要
本文为使用Amazon Elastic Kubernetes Service(EKS)部署和管理业务流程自动化(BPA)应用提供了全面的指南。 它概述了必备条件,重点说明了使用EKS的优势,并提供了设置EKS集群、Amazon RDS数据库和MongoDB Atlas的逐步说明。此外,本文还深入研究了部署架构并明确了环境要求,为希望将EKS用于其容器化BPA应用的组织提供了全面的资源。
关键字:Amazon EKS、Kubernetes、AWS、RDS、MongoDB Atlas、DevOps、云计算、业务流程自动化。
简介
业务流程自动化(BPA)
思科业务流程自动化(BPA)服务提供专为流程和工作流程自动化和协调而设计的端到端咨询和支持服务组合。BPA平台具有可扩展和基于微服务的功能,具有嵌入式工作流引擎、数字用户界面和通用集成中间件。此平台有助于实现复杂网络配置更改和相关流程的自动化,使其适用于服务提供商客户和大型全球企业。
Cisco BPA服务的主要优势包括:
- 使复杂的方法和操作程序实现自动化。
- 增强团队专业知识以加速自动化计划。
- 通过改进的用户界面/门户加快新服务的推出。
- 将传统网络与新的自动化功能集成。
BPA平台支持各种业务和IT/操作使用案例,例如操作系统升级、服务调配以及与协调引擎的集成。客户可以访问服务和BPA功能的生命周期,包括咨询、实施、业务关键型服务和解决方案支持,Cisco BPA服务旨在提高运营效率、减少代价高昂的错误、提高业务灵活性并实现更快的自动化投资回报。
AMAZON ELASTIC KUBERNETES服务(EKS)
Amazon Elastic Kubernetes Service(EKS)是Amazon Web Services(AWS)提供的完全托管的Kubernetes服务。 EKS于2018年推出,它使用开源容器协调平台Kubernetes简化了部署、管理和扩展容器化应用的流程。EKS将Kubernetes群集管理的复杂性抽象化,使开发人员能够专注于构建和运行应用程序,而无需处理底层基础架构。
使用Amazon EKS进行应用部署的优势
Amazon EKS提供多种应用部署优势,使其成为利用容器化应用和微服务的组织的热门选择。
主要优势包括:
-
托管Kubernetes控制平面:EKS处理Kubernetes控制平面的部署、扩展和维护,从而减轻运营负担。
-
简化的群集管理:EKS将设置和管理Kubernetes群集的复杂性抽象化。
-
可扩展性:EKS允许轻松扩展集群,以适应不断增长的工作负载。
-
高可用性:EKS支持多可用性区域部署,提高了可用性和容错能力。
-
与AWS服务集成:EKS与各种AWS服务无缝集成。
- 开发运营自动化:EKS支持容器化应用的持续集成和持续部署(CI/CD)。
BPA部署架构
此映像使用多个关键组件代表在AWS上部署的基于云的基础设施的高级架构。下面是图示的细分:
- Amazon EKS(Elastic Kubernetes服务):在图表的核心部分,Amazon EKS部署在三个可用区域(AZ1、AZ2、AZ3)中,每个区域内部有Kubernetes工作节点。这表明存在高可用性和容错设置,因为工作负载分布在多个可用性区域。
- ALB(应用负载均衡器):该端口位于前端,接收来自用户的流量并将其分布到EKS集群中,以处理应用工作负载。负载均衡器可确保均匀分配请求,并可根据流量需求处理扩展。
- Amazon RDS(关系数据库服务) — PostgreSQL:在图表的右侧,存在运行PostgreSQL的Amazon RDS实例。EKS群集中运行的应用程序可以访问此数据库。
- ECR(弹性容器注册表):这里存储和管理Docker容器映像,然后将其部署到Amazon EKS以运行工作负载。
- MongoDB Atlas:在左侧,MongoDB Atlas通过专用终端集成到架构中。MongoDB Atlas是云托管的NoSQL数据库服务,用于处理基于文档的数据库要求。专用终端可确保MongoDB Atlas实例与其他AWS组件之间的安全专用通信。
- Bastion主机:Bastion Host位于VPC(虚拟私有云)内,为管理员提供安全的入口点来访问VPC内的资源,而无需将其直接暴露于互联网。
- 总体而言,此架构为使用Amazon EKS部署和管理容器化应用提供了高度可用、可扩展且安全的解决方案,同时支持关系(PostgreSQL)和NoSQL(MongoDB)数据库。
EKS集群设置
RDS数据库设置
在Amazon RDS上部署关系数据库涉及以下步骤:
- 访问AWS管理控制台并导航至Amazon RDS服务。
- 创建具有所需规范的新数据库实例。
- 配置安全组,以允许来自Amazon EKS集群的传入连接。
- 使用下拉菜单选择PostgreSQL的最新版本。 在本例中,它是“PostgreSQL 16.3-R1”。
- 为此,请为数据库实例指定名称,并创建用户名和密码。
- 确保选中“数据库实例大小”和“存储”的默认设置。根据群集大小和数据要求,选择适当的数据库实例大小和存储类型。
- 根据我们的使用案例,我们选择了以下配置:
- 数据库实例大小:db.m5d.2xlarge
- 8 个 vCPU
- 32 GiB内存
- 网络:4,750 Mbps
- 300 GB实例存储
- 根据您的使用案例选择适当的值。我们已选择默认值。
- 确保在“Database authentication”中选择了Password authentication。使用数据库密码进行身份验证。
- 验证后,即可创建数据库。返回Amazon RDS控制面板。确认该实例可供使用。
安全组规则
- 使用Pod CIDR和节点CIDR块更新入站安全组。
- 在RDS -> Databases -> DB-NAME中,点击configuration并参阅Parameter Group部分,然后点击要查看的参数组。
- 搜索“password_encryption”并将值从空白/其他值更改为md5。要使卡蒙达配置正常工作,需要执行此步骤。
- 通过连接到RDS创建这些数据库和用户。
PG_ROOT_DATABASE=admin
PG_INITDB_ROOT_USERNAME=admin
PG_INITDB_ROOT_PASSWORD=xxxxxxx
AUTH_DB_NAME=kong
AUTH_DB_USER=kong
AUTH_DB_PASSWORD=xxxxxxxxx
WFE_DB_USER=camunda
WFE_DB_PASSWORD=xxxxxxxx
WFE_DB_NAME=进程引擎
- 要更新数据库密码,请修改
bpa-helm-chart/bpa/env/environment.txt
文件中的值。此文件用于对数据库连接进行身份验证。
ATLAS MONGODB设置
设置Atlas MongoDB涉及:
- 登录Atlas MongoDB。
- 选择组织和项目。
- 创建具有相应规格和版本的专用集群。在本例中,它是“MongoDB Atlas v5.0.29”。
- 选择专用层、云提供商和地区。
- 选择适当的层(我们使用M30作为层)专用集群,并提供相应的集群名称,然后点击Create Cluster。它将初始化Atlas monogodb群集。
- 为Atlas和K8S群集设置VPC专用终端。
- 点击Network Access Select Private Endpoint并单击Add Private Endpoint。
- 选择Cloud Provider(云提供商)作为AWS,选择相应的区域,然后点击Next(下一步)。
- 提供各自的PVC ID和子网ID。输入详细信息后,复制vpc终端创建命令并在aws控制台中执行。您将获得vpc终端id作为输出。
- 点击Next粘贴VPC终端ID,然后点击Create。
- 成功创建后,cndpoint状态将变为“可用”(Available),如下图所示。必须为Pod CIDR创建VPC终端。在本例中,我们使用了“100.64.0.0/16”。
- 将入站规则添加到新创建的vpc-endpoint。vpc-endpoint将位于父帐户中,必须将安全组分配给新创建的vpc-endpoint。
ECR作为映像注册表
-
创建Amazon ECR存储库并将Docker映像推入其中涉及几个步骤。以下是创建ECR存储库、标记Docker映像以及使用AWS CLI将其推送到存储库的步骤。
aws ecr create-repository —repository-name your-image-name —region your-region
-
替换:
- 标记和推送图像的步骤。
- 示例:
docker tag containers.cisco.com/bpa/sase-service:4.0.3-522 <account number>.dkr.ecr.us-west-2.amazonaws.com/<repository_path>/sase-service:4.0.3-522
docker push <account number>.dkr.ecr.us-west-2.amazonaws.com/<repository_path>/sase-service:4.0.3-522
-
为EKS节点配置IAM角色
-
确保EKS工作节点(EC2实例)具有附加从ECR提取映像的权限的必要IAM角色。所需的IAM策略为:
{
"版本": "2012-10-17 ",
“声明”:[
{
“效果”: "允许",
"动作":[
"Ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:BatchCheckLayerAvailability"
],
"资源": "*"
}
]
}
-
将此策略附加到与您的EKS工作节点关联的IAM角色。
BPA部署
BPA的部署包括几个步骤,包括标记EKS工作节点,在节点上准备目录,复制BPA包,以及使用Helm部署BPA。
-
在客户部署方面,我们使用了以下版本的软件和云服务:
- BPA:4.0.3-6
- RDS(关系数据库服务):PostgreSQL 16.3-R1
- MongoDB Atlas:v5.0.29
- EKS(Elastic Kubernetes服务):v1.27
- 这些组件可确保我们的部署是稳健的、可扩展的,并且能够高效地处理所需的工作负载。
- 标记EKS工作节点
kubectl label node <worker_node_1> name=node-1
kubectl label node <worker_node_2> name=node-2
kubectl label node <worker_node_3> name=node-3
kubectl label node <worker_node_4> name=node-4
在节点上准备目录
- 节点 1:
rm -rf /opt/bpa/data/
mkdir -p /opt/bpa/data/zookeeper1
mkdir -p /opt/bpa/data/zookeeper4
mkdir -p /opt/bpa/data/zookeeper5
chmod 777 /opt/bpa/data/zookeeper1
chmod 777 /opt/bpa/data/zookeeper4
chmod 777 /opt/bpa/data/zookeeper5
mkdir -p /opt/bpa/data/kafka1
chmod 777 /opt/bpa/data/kafka1
sysctl -w vm.max_map_count=262144
- 节点 2:
rm -rf /opt/bpa/data/
mkdir -p /opt/bpa/data/zookeeper1
mkdir -p /opt/bpa/data/zookeeper4
mkdir -p /opt/bpa/data/zookeeper5
chmod 777 /opt/bpa/data/zookeeper1
chmod 777 /opt/bpa/data/zookeeper4
chmod 777 /opt/bpa/data/zookeeper5
mkdir -p /opt/bpa/data/kafka1
chmod 777 /opt/bpa/data/kafka1
sysctl -w vm.max_map_count=262144
- 节点 3:
rm -rf /opt/bpa/data
sysctl -w vm.max_map_count=262144
mkdir -p /opt/bpa/data/kafka3
mkdir -p /opt/bpa/data/zookeeper3
mkdir -p /opt/bpa/data/zookeeper4
mkdir -p /opt/bpa/data/zookeeper5
chmod 777 /opt/bpa/data/kafka3
chmod 777 /opt/bpa/data/zookeeper3
chmod 777 /opt/bpa/data/zookeeper4
chmod 777 /opt/bpa/data/zookeeper5
- 节点 4:
mkdir -p /opt/bpa/data/elk
mkdir -p /opt/bpa/data/metrices/prometheus
mkdir -p /opt/bpa/data/metrics/grafana
chmod 777 /opt/bpa/data/metrices
chmod 777 /opt/bpa/data/metrices/prometheus
chmod 777 /opt/bpa/data/metrices/grafana
sysctl -w vm.max_map_count=262144
复制BPA包
scp -r包到节点1:/opt/bpa/
scp -r包到node2:/opt/bpa/
scp -r包到节点3:/opt/bpa/
scp -r包到节点4:/opt/bpa/
使用Helm部署BPA
helm install bpa-rel —create-namespace —namespace bpa-ns /opt/EKS/bpa-helm-chart
入口设置
启用入口
- 更新
值。yamlto
启用入口:
ingress_controller:{创建:true}
使用BPA证书创建密钥
- 导航到证书目录并创建密钥:
cd /opt/bpa/<BPA helm chart location>/bpa/conf/common/certs/
kubectl create secret tls bpa-certificate-ingress —cert=bap-cert.pem —key=bap-key.pem -n bpa-ns
更新入口控制器
- 在
ingress-controller.yaml
中添加新创建的密钥 文件:
cd /opt/bpa/<BPA helm chart location>/templates/
vi ingress-controller.yaml
"—default-ssl-certificate=$(POD_NAMESPACE)/bpa-certificate-ingress"
更新入口证书
环境规格
环境规范包括EC2实例、负载均衡器、VPC终端和RDS实例的要求。主要规格包括:
-
EC2要求:
-
存储要求:每个节点2TB的空间。将EBS卷装入/opt并在/etc/fstab中添加所有节点的条目。
-
入站安全组:30101、443、0 - 65535 TCP、22用于ssh。
-
安全组出站:必须启用所有流量。
-
DNS 解析器:EC2必须在/etc/resolve.conf中具有内部解析器。
负载均衡器要求:
- 侦听程序端口必须是443、30101。
- VPC终端要求(Atlas MongoDB)。
- 为Atlas连接创建的VPC终端在父帐户中可用。VPC终端必须具有允许所有入站访问的安全组(0 - 65535)。
关键概念和组件
了解Kubernetes基础知识对于使用Amazon EKS有效地部署和管理应用至关重要。
结论
本文为使用Amazon EKS部署和管理业务流程自动化(BPA)应用提供了详细的指南。通过遵循概述的步骤并了解关键概念,组织可以将EKS的优势用于其容器化BPA应用。
参考
Amazon Web Services、“Amazon EKS Documentation”、[Online]。可访问:https://docs.aws.amazon.com/eks/
Kubernetes,“Kubernetes Documentation”,[在线]。可访问:https://kubernetes.io/docs/home/
思科BPA概览https://www.cisco.com/c/en/us/solutions/collateral/service-provider/at-a-glance-c45-742579.html
BPA操作指南https://www.cisco.com/c/dam/en/us/support/docs/bpa/v403/cisco-bpa-operations-guide-v403.pdf
BPA开发人员指南https://www.cisco.com/c/dam/en/us/support/docs/bpa/v403/cisco-bpa-developer-guide-v403.pdf