JFrog プラットフォームによるDocker Compose および ECS との連携

ツール
ツール

このセクションでは、JFrog Pipelines を使用して CI/CD パイプラインを設定します。パイプラインでは、アプリケーションを取得し、Docker イメージをビルドします。それを Docker リポジトリにプッシュします。セキュリティ脆弱性をスキャンします。次に、それをプロモートします。最後に、Docker Compose を使用して AWS ECS クラスターにデプロイします。Docker Compose を使用して Amazon ECS を作成およびデプロイする方法について詳しくはこちらをご覧ください。

JFrog プラットフォームによるDocker Compose および ECS との連携

次のことを行います:

  • ワークショップコードを設定
  • GitHub、AWS、およびArtifactoryリポジトリに接続するためのJFrog Pipelines統合を設定
  • CI/CDパイプラインをJFrog Pipelinesに追加します。次にアプリをビルドしてデプロイ
  • Docker Composeを使用して新しいECSクラスターを自動的に作成

このワークショップではDockerを使用しますが、JFrogプラットフォームはAlpine、Maven、Gradle、Docker、Conda、Conan、Debian、Go、Helm、Vagrant、YUM、P2、Ivy、NuGet、PHP、NPM、RubyGems、PyPI、Bower、CocoaPods、GitLFS、Opkg、SBTなど、すべての主要なパッケージ形式をサポートするユニバーサルソリューションです。

コードのダウンロード

コードは、このGitHubリポジトリにあります。ワークショップに必要なファイルとスクリプトを取得するために、このリポジトリをローカルにクローンします。

  1. このリンクにアクセスし、このリポジトリをあなたのGitHubアカウントにフォークします。
  2. Cloud9ターミナルで、次のコマンドを使用してこのリポジトリをローカルディレクトリにクローンします:
git clone https://github.com/<GitHubユーザー名>/aws-ecs-docker-compose-workshop.git
JFrog プラットフォームによるDocker Compose および ECS との連携

JFrog Pipelinesの統合を設定

CI/CDパイプラインでは、コードを取得するためにGitHubへのアクセス、DockerイメージをデプロイするためにJFrog Artifactoryへのアクセス、ECSにデプロイするためにAWSへのアクセスが必要です。これを可能にするために、JFrog Pipelinesの統合を設定します。

![Pipelines Integration](/images/pipeline-integrations-diagram.png)

統合は、Pipelinesを外部サービスやツールに接続します。各統合タイプは、エンドポイント、認証情報、およびサービスと情報を交換するために必要なその他の設定詳細を定義します。すべての認証情報は暗号化され、安全なストレージに保存されます。

これらの統合を以前のステップで既に作成している場合は、それらを再利用できるため、再作成する必要はありません。JFrog Pipelinesは、統合とリソースをパイプライン間で共有することを許可します。

  1. JFrog Platformのインスタンスで、管理 > パイプライン > 統合に移動します。
  2. 統合を追加をクリックします。
  3. 名前には「artifactory_integration」と入力します。
  4. 統合タイプには「Artifactory」を選択します。
  5. APIキーの取得をクリックしてAPIキーを生成します。
  6. 接続をテストをクリックして確認します。
  7. 作成をクリックして統合を作成します。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  1. 次に、再び統合を追加をクリックします。
  2. 名前には「github_integration」と入力します。
  3. 統合タイプには「GitHub」を選択します。
  4. GitHubの個人アクセストークンをコピーして貼り付けます。以下の最低限のGitHub権限を持っていることを確認してください:
  • repo(すべて)
  • admin:repo_hook(読み取り、書き込み)
  • admin:public_key(読み取り、書き込み)

  1. 接続をテストをクリックして確認します。
  2. 作成をクリックして統合を作成します。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  1. 次に、Cloud9のターミナルで以下のコマンドを実行し、AWSユーザーとアクセスキーIDおよびシークレットアクセスキーを作成します。
    aws iam create-user --user-name workshopuser
    aws iam attach-user-policy --user-name workshopuser --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
    aws iam create-access-key --user-name workshopuser
  1. これらのコマンドの出力をコピーします。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  2. JFrog Platformのインスタンスに戻り、管理 > パイプライン > 統合に移動します。
  3. 次に、再び統合を追加をクリックします。
  4. 名前には「aws_integration」と入力します。
  5. 統合タイプには「AWS」を選択します。
  6. 上記のアクセスキーIDとシークレットアクセスキーの値を入力します。
  7. 作成をクリックして統合を作成します。
    JFrog プラットフォームによるDocker Compose および ECS との連携

おめでとうございます!これで、CI/CDパイプラインに必要な統合が作成されました。

JFrog プラットフォームによるDocker Compose および ECS との連携
[Ubuntu]Obsidianのインストール
Ubuntu 24.04環境へObsidianをインストールし、Self-hosted LiveSyncによる同期やVimモード、Local REST APIの設定、Zshとの統合を行う手順を解説。エンジニア向けに最適化された爆速メモ環境を構築できます。

パイプラインの更新

JFrog Platformのインスタンスを使用するためにCI/CDパイプラインを更新する必要があります。CI/CDパイプラインはpipelines.ymlで定義されています。このパイプラインファイルはvalues.ymlファイルでパラメータ化されています。このファイルを更新する必要があります。

  1. Cloud9ターミナルでエディタを使用してpipelines.ymlファイルを表示し、ステップを確認します。パラメータ化された値に注意してください。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  2. 最後のステップであるecs_deployでは、特別なECSコンテキストを使用して、Docker Composeを使用してECSクラスターにアプリケーションをデプロイします。これはdeploy.shスクリプトで実現されます。このファイルをエディタで表示してください。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  3. エディタでvalues.ymlファイルを選択し、パラメータ化された値をJFrog Platformインスタンスとフォークしたリポジトリを指すように更新します。変更を保存します。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  4. Cloud9のターミナルで、次のコマンドを実行してこれらの変更をコミットします。
    git add .
    git commit -m \'Updated values.yml.\'
  1. 次に、これらの更新をプッシュします。ユーザー名とパスワードを求められた場合は、GitHubのユーザー名と個人アクセストークン/パスワードを使用してください。
    git push origin master

これで、CI/CDパイプラインを追加して実行する準備が整いました。

JFrog プラットフォームによるDocker Compose および ECS との連携
LLM Wikiとは?
LLM Wikiの定義やRAGとの違い、3層アーキテクチャ、運用サイクルを解説。Obsidianを活用して、AIにより非構造化データを構造化された知識ベースへと再構成・構築する具体的な手順と技術的知見を提供します。

ビルド、公開、およびECSへのデプロイ

  1. JFrog Platformインスタンスで、アプリケーション > パイプライン > パイプラインソースに移動します。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  2. パイプラインソースを追加をクリックします。
  3. 右上のパイプラインソースを追加をクリックし、YAMLからを選択します。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  4. SCMプロバイダーの統合には、以前に作成したgithub_integrationを選択します。
  5. リポジトリのフルネームにはフォークした/aws-ecs-docker-compose-workshopを選択します。
  6. ブランチにはmasterを選択します。
  7. パイプライン設定ファイルフィルターはpipelines.ymlのままにします。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  8. ソースを作成をクリックします。JFrog PipelinesがCI/CDパイプラインを処理します。ステータスは「同期されていない」、「同期中」、そして「成功」と表示されます。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  9. アプリケーション > パイプライン > 私のパイプラインに移動します。パイプラインのステータスが「ビルドされていない」と表示されていることに気づきます。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  10. パイプラインaws_ecs_docker_compose_workshop_app_buildをクリックします。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  11. app_docker_buildステップをクリックし、このステップを実行してパイプラインをトリガーします。JFrog Pipelinesはビルドノードを割り当て、パイプラインを実行します。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  12. 実行には数分かかります。各ステップのステータスを監視するには、「実行」をクリックします。
  13. プルダウンを使用して各ステップを選択し、ログを表示します。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  14. パイプラインの実行が完了したら(約5〜10分)、ecs_deployステップのログを表示します。
  15. このパイプラインが実行中の間に、CloudFormationコンソールに移動して、新しいECSクラスターの作成を確認します。また、ECSコンソールに移動して新しいクラスターを観察できます。
  16. 下にスクロールしてポート値を取得します。ブラウザにその値を入力して、アプリケーションを表示します!
    JFrog プラットフォームによるDocker Compose および ECS との連携

JFrogで結果を表示

Dockerイメージをビルドして公開しました。これらの結果をJFrogプラットフォームで確認しましょう。

  1. JFrogプラットフォームインスタンスにアクセスし、Artifactoryのパッケージビューに切り替えます。Artifactory ► パッケージに移動します。
  2. ワークショップでビルドされたDockerイメージの名前を検索します。ECSビルドの場合はecs-docker-compose-workshop-appを、EKSビルドの場合はeks-workshop-appを検索します。
  3. Dockerイメージのリストをクリックします。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  4. バージョンのリストが表示されます。ビルドされた最新バージョンをクリックします。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  5. Xrayデータタブでセキュリティ違反を確認します。ライセンス違反はJFrogプラットフォームのProおよびEnterpriseティアで利用可能です。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  6. 任意の違反をクリックして、問題の詳細タブで詳細と影響を確認します。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  7. 下にスクロールして参照セクションにアクセスし、問題を修正するためのドキュメントへのリンクを確認します。
    JFrog プラットフォームによるDocker Compose および ECS との連携
    多くの場合、コンポーネントを更新するだけでXrayがこれを示します。
    JFrog プラットフォームによるDocker Compose および ECS との連携

Xrayはすべての主要なパッケージタイプをサポートし、パッケージを展開する方法を理解し、再帰的なスキャンを使用してコンポーネントのすべての基礎的な層と依存関係を確認します。包括的な脆弱性インテリジェンスデータベースは常に更新され、バイナリのセキュリティとコンプライアンスの最新の理解を提供します。

  1. 問題の詳細タブを閉じます。
  2. DockerレイヤータブでイメージのDocker構成を表示します。
  3. ビルドタブで、リストからnpm_buildをクリックします。
    JFrog プラットフォームによるDocker Compose および ECS との連携
  4. 最新のビルドをクリックします。
  5. 公開されたモジュールタブで、ビルドのアーティファクトと依存関係のセットを確認します。
    JFrog プラットフォームによるDocker Compose および ECS との連携

JFrog CI/CD「パイプライン」は、JFrog Pipelines、Artifactory、およびXrayを使用して、通常のビルド、Dockerビルドとプッシュ、セキュリティスキャンおよびプロモーションプロセスの概要を提供しました。JFrogプラットフォームを使用すると、バージョンから脆弱性まで、ソフトウェアビルドの結果を確認できます。

訳したページ

JFrog プラットフォームによるDocker Compose および ECS との連携
JFrog Platform with Docker Compose & ECS :: On Your Own Setup
AWS Modernization Workshop
Q よくある質問 (FAQ)
Q. JFrog PipelinesとAWS ECSを連携させるために必要な設定は何ですか?
A.
GitHub(ソースコード取得用)、Artifactory(イメージ管理用)、AWS(ECSデプロイ用)の3つの統合(Integration)設定が必要です。
Q. Docker Composeを使用したAWS ECSへのデプロイはどのように行われますか?
A.
パイプラインの最終ステップ(ecs_deploy)において、特別なECSコンテキストとdeploy.shスクリプトを用いて、Docker Compose経由でECSクラスターへ自動デプロイされます。

コメント

タイトルとURLをコピーしました