概要
このホワイトペーパーでは、Amazon Elastic Kubernetes Service (EKS)を使用したビジネスプロセス自動化(BPA)アプリケーションのデプロイと管理に関する包括的なガイドを紹介します。 前提条件の概要を説明し、EKSを利用する利点を示し、EKSクラスター、Amazon RDSデータベース、およびMongoDB Atlasをセットアップする手順を説明します。さらに、導入アーキテクチャを詳しく調べ、環境要件を特定し、コンテナ化されたBPAアプリケーションにEKSを活用することを目指す組織に対して徹底したリソースを提供します。
キーワード:Amazon EKS、Kubernetes、AWS、RDS、MongoDB Atlas、DevOps、クラウドコンピューティング、ビジネスプロセスの自動化。
概要
ビジネスプロセスの自動化(BPA)
Cisco Business Process Automation(BPA)Servicesは、プロセスとワークフローの自動化およびオーケストレーションのために設計されたエンドツーエンドのコンサルティングとサポートサービスのポートフォリオを提供します。BPAプラットフォームは、スケーラブルでマイクロサービスベースであり、組み込みワークフローエンジン、デジタルユーザインターフェイス、および共通の統合ミドルウェアを備えています。このプラットフォームは、複雑なネットワーク構成の変更や関連プロセスを自動化するのに役立ち、サービスプロバイダーのお客様と大規模なグローバル企業の両方に適しています。
Cisco BPAサービスの主な利点は次のとおりです。
- 複雑な方法や運用手順の自動化。
- チームの専門知識を強化し、自動化イニシアチブを加速する。
- ユーザインターフェイス/ポータルの改善により、新しいサービスの展開を促進します。
- レガシーネットワークと新しい自動化機能の統合
BPAプラットフォームは、OSのアップグレード、サービスプロビジョニング、オーケストレーションエンジンとの統合など、さまざまなビジネスおよびIT/運用のユースケースをサポートします。お客様は、サービスのライフサイクルと、アドバイザリ、実装、ビジネスクリティカルなサービス、およびソリューションサポートなどのBPA機能にアクセスできます。Cisco BPAサービスは、運用効率の向上、コストのかかるエラーの削減、ビジネスの俊敏性の向上、および自動化投資からより迅速な利益を実現することを目的としています。
AMAZON ELASTIC KUBERNETESサービス(EKS)
Amazon Elastic Kubernetes Service(EKS)は、アマゾンウェブサービス(AWS)が提供する完全マネージド型のKubernetesサービスです。 2018年に開始されたEKSは、オープンソースコンテナオーケストレーションプラットフォームである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は3つのアベイラビリティーゾーン(AZ1、AZ2、AZ3)にデプロイされ、各ゾーン内にKubernetesワーカーノードがあります。これは、ワークロードが複数のアベイラビリティーゾーンに分散しているため、可用性が高く、フォールトトレラントな設定であることを示しています。
- ALB(アプリケーションロードバランサ):前面に配置され、ユーザからトラフィックを受信し、アプリケーションワークロードを処理するためにEKSクラスタ全体に分散します。ロードバランサによって、要求が均等に分散され、トラフィックの需要に基づいた拡張を処理できるようになります。
- Amazon RDS (Relational Database Service) - PostgreSQL:図の右側には、PostgreSQLを実行するAmazon RDSインスタンスが存在します。このデータベースには、EKSクラスタ内で実行されているアプリケーションからアクセスできます。
- ECR(Elastic Container Registry):これはDockerコンテナイメージが格納および管理される場所で、ワークロードを実行するためにAmazon EKSにデプロイされます。
- MongoDB Atlas:左側では、MongoDB Atlasがプライベートエンドポイントを介してアーキテクチャに統合されています。MongoDB Atlasは、クラウドホスト型のNoSQLデータベースサービスで、ここではドキュメントベースのデータベース要件を処理するために使用されます。プライベートエンドポイントは、MongoDB Atlasインスタンスと他のAWSコンポーネント間の安全なプライベート通信を保証します。
- Bastion Host:Virtual Private Cloud(VPC)内に設置されたBastion Hostは、管理者がVPC内のリソースにインターネットに直接触れることなくアクセスできるセキュアなエントリポイントを提供します。
- 全体として、このアーキテクチャは、リレーショナル(PostgreSQL)データベースとNoSQL(MongoDB)データベースの両方をサポートし、Amazon EKSを使用してコンテナー化されたアプリケーションをデプロイおよび管理するための、可用性、拡張性、および安全性に優れたソリューションを提供します。
EKSクラスタセットアップ
RDSデータベースセットアップ
Amazon RDSでリレーショナルデータベースをデプロイするには、次の手順を実行します。
- AWSマネジメントコンソールにアクセスし、Amazon RDSサービスに移動します。
- 目的の仕様で新しいデータベースインスタンスを作成します。
- Amazon EKSクラスターからの着信接続を許可するようにセキュリティグループを構成します。
- ドロップダウンメニューを使用して、PostgreSQLの最新バージョンを選択します。 この例では「PostgreSQL 16.3-R1」です。
- このため、データベース・インスタンスに名前を付け、ユーザー名とパスワードを作成します。
- 「DBインスタンスサイズ」と「ストレージ」のデフォルト設定が選択されていることを確認します。クラスタサイズとデータ要件に応じて、適切なDBインスタンスサイズとストレージタイプを選択します。
- この使用例に基づいて、次の設定を選択しました。
- DBインスタンスサイズ: db.m5d.2xlarge
- 8 つの vCPU
- 32 GiB RAM
- ネットワーク:4,750 Mbps
- 300 GBインスタンスストア
- ユースケースに応じて適切な値を選択します。デフォルト値が選択されています。
- 「データベース認証」で、パスワード認証を選択したことを確認してください。データベースパスワードを使用して認証します。
- これが確認されたら、データベースを作成する準備が整います。Amazon RDSダッシュボードに戻ります。インスタンスが使用可能であることを確認します。
セキュリティグループルール
- ポッドCIDRおよびノードCIDRブロックを使用して、着信セキュリティグループを更新します。
- RDS -> Databases -> DB-NAMEで、configurationをクリックし、Parameter Groupセクションを参照して、表示するパラメータグループをクリックします。
- 「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=camunda
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を使用しました)専用クラスタを選択し、適切なクラスタ名を指定して[クラスタの作成]をクリックします。Atlas monogodbクラスタを初期化します。
- AtlasおよびK8SクラスタのVPCプライベートエンドポイントをセットアップします。
- Network Access Select Private Endpointをクリックし、Add Private Endpointをクリックします。
- AWSとしてCloud Providerを選択し、それぞれのリージョンを選択してNextをクリックします。
- それぞれのPVC IDとサブネットIDを入力します。詳細を入力したら、vpcエンドポイント作成コマンドをコピーし、awsコンソールで実行します。vpcエンドポイントidが出力として表示されます。
- NextをクリックしてVPCエンドポイントIDを貼り付け、Createをクリックします。
- 正常に作成されると、次の図に示すように、cndpointのステータスがAvailableになります。ポッド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タグ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"、
"Statement": [
{
"作用": "プライベート ネットワーク間で"、
"Action": [
「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アトラス:v5.0.29
- EKS(Elastic Kubernetes Service):v1.27
- これらのコンポーネントにより、堅牢でスケーラブルな導入が可能になり、必要なワークロードを効率的に処理できるようになります。
- EKSワーカーノードのラベル付け
kubectlラベルノード<worker_node_1> name=node-1
kubectlラベルノード<worker_node_2> name=node-2
kubectlラベルノード<worker_node_3> name=node-3
kubectlラベルノード<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/metrices/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パッケージを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 – 名前空間bpa-ns /opt/EKS/bpa-helm-chart
入力セットアップ
入力の有効化
値
を更新します。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
DSN エントリの例:
cd /opt/bpa/<BPA helm chart location>/templates/
vi入力コントローラ.yaml
"- —default-ssl-certificate=$(POD_NAMESPACE)/bpa-certificate-ingress"
入力証明書の更新
- Helmの削除とインストールを実行して、入力証明書を更新します。
環境仕様
環境仕様には、EC2インスタンス、ロードバランサ、VPCエンドポイント、およびRDSインスタンスの要件が含まれます。主な仕様は次のとおりです。
-
EC2要件:
-
ストレージ要件:ノードあたり2 TBの容量EBSボリュームを/optにマウントし、すべてのノードのエントリを/etc/fstabに追加します。
-
セキュリティグループインバウンド: 30101、443、0 ~ 65535 TCP、22(sshの場合)
-
Security group outbound:すべてのトラフィックを有効にする必要があります。
-
DNSリゾルバ:EC2には、/etc/resolve.confにオンプレミスリゾルバが必要です。
ロードバランサの要件:
- リスナーポートは443、30101である必要があります。
- VPCエンドポイント要件(Atlas MongoDB)
- Atlas接続用に作成されたVPCエンドポイントは、親アカウントで使用できます。VPCエンドポイントには、すべての着信アクセス(0 ~ 65535)を許可するセキュリティグループが必要です。
主要な概念とコンポーネント
Amazon EKSを使用してアプリケーションを効果的にデプロイおよび管理するには、Kubernetesの基礎を理解することが不可欠です。
まとめ
このホワイトペーパーでは、Amazon EKSを使用してビジネスプロセス自動化(BPA)アプリケーションをデプロイおよび管理するための詳細なガイドを提供します。概説された手順に従い、主要な概念を理解することで、組織はコンテナ化BPAアプリケーションに対してEKSの利点を活用できます。
参考資料
アマゾンウェブサービス、「Amazon EKSドキュメント」[オンライン]。入手可能: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