摘要
本文提供使用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