摘要
本文提供使用Amazon Elastic Kubernetes Service(EKS)部署和管理Business Process Automation(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功能,包括諮詢、實施、業務關鍵型服務和解決方案支援,思科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服務無縫整合。
- DevOps自動化:EKS支援容器化應用的持續整合和持續部署(CI/CD)。
BPA部署架構
此映像使用多個關鍵元件在AWS上部署了基於雲的基礎設施,該基礎設施具有高級架構。下面是圖示的細分:
- Amazon EKS(Elastic Kubernetes Service):在圖表的核心部分,Amazon EKS部署在三個可用區域(AZ1、AZ2、AZ3)中,每個區域內部有Kubernetes工作節點。這表明存在高可用性和容錯設定,因為工作負載分佈在多個可用區。
- ALB(應用負載平衡器):該模組位於前端,接收來自使用者的流量,並將其分佈到EKS集群中,以處理應用程式工作負載。負載均衡器確保請求均勻分佈,並能夠處理基於流量需求的擴展。
- Amazon RDS(關聯式資料庫服務) — PostgreSQL:在圖的右側,存在運行PostgreSQL的Amazon RDS例項。EKS群集中運行的應用程式可以訪問此資料庫。
- ECR(Elastic Container Registry):這裡儲存和管理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 RAM
- 網路:4,750 Mbps
- 300 GB例項儲存
- 根據您的使用案例選擇適當的值。我們已選擇預設值。
- 確保在「Database authentication」中選擇了「Password authentication」。使用資料庫密碼進行身份驗證。
- 驗證之後,即可建立資料庫。返回Amazon RDS控制面板。確認該例項可供使用。
安全組規則
- 使用Pod CIDR和節點CIDR塊更新入站安全組。
- 在RDS -> Databases -> DB-NAME中,按一下配置並參閱「參陣列」部分,然後按一下要檢視的參陣列。
- 搜尋「password_encryption」,並將值從空白/其他值更改為md5。要使camunda配置正常工作,需要執行此操作。
- 通過連線到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=卡蒙達
WFE_DB_PASSWORD=xxxxxxxx
WFE_DB_NAME=process-engine
- 要更新資料庫口令,請修改
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作為輸出。
- 按一下「下一步」貼上VPC端點ID,然後按一下「建立」。
- 成功建立後,condpoint狀態將變為「可用」,如下圖所示。必須為Pod cidr建立VPC端點。在本例中,我們使用了「100.64.0.0/16」。
- 將入站規則新增到新建立的vpc終結點。vpc-endpoint將位於父帳戶中,必須將安全組分配給新建立的vpc-endpoint。
ECR作為映像登錄檔
-
建立Amazon ECR儲存庫和將Docker映像推入這些儲存庫涉及幾個步驟。以下是使用AWS CLI建立ECR儲存庫、標籤Docker映像並將其推入儲存庫的步驟。
aws ecr create-repository —repository-name your-image-name —region your-region
-
替換:
- 標籤和推送影象的步驟。
- 範例:
docker標籤containers.cisco.com/bpa/sase-service:4.0.3-522 <帳號>.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 Service):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/metrics
chmod 777 /opt/bpa/data/metrices/prometheus
chmod 777 /opt/bpa/data/metrics/grafana
sysctl -w vm.max_map_count=262144
複製BPA包
scp -r包到node1:/opt/bpa/
scp -r包到node2:/opt/bpa/
scp -r包到node3:/opt/bpa/
scp -r包到node4:/opt/bpa/
使用Helm部署BPA
helm install bpa-rel —create-namespace —namespace bpa-ns /opt/EKS/bpa-helm-chart
入口設定
啟用Ingress
- 更新
值。
yamlto enable ingress:
ingress_controller:{create: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」[線上]。可參閱:https://docs.aws.amazon.com/eks/
Kubernetes,「Kubernetes Documentation」,[線上]。可參閱:https://kubernetes.io/docs/home/
Cisco 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