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

未分類

このセクションでは、JFrog Pipelines を使用して CI/CD パイプラインを設定します。パイプラインでは、アプリケーションを取得し、Docker イメージをビルドします。それを Docker リポジトリにプッシュします。セキュリティ脆弱性をスキャンします。次に、それをプロモートします。最後に、Docker Compose を使用して AWS ECS クラスターにデプロイします。Docker Compose を使用して Amazon 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 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. 作成をクリックして統合を作成します。
  1. 次に、再び統合を追加をクリックします。
  2. 名前には「github_integration」と入力します。
  3. 統合タイプには「GitHub」を選択します。
  4. GitHubの個人アクセストークンをコピーして貼り付けます。以下の最低限のGitHub権限を持っていることを確認してください:
  • repo(すべて)
  • admin:repo_hook(読み取り、書き込み)
  • admin:public_key(読み取り、書き込み)

  1. 接続をテストをクリックして確認します。
  2. 作成をクリックして統合を作成します。
  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. これらのコマンドの出力をコピーします。
  2. JFrog Platformのインスタンスに戻り、管理 > パイプライン > 統合に移動します。
  3. 次に、再び統合を追加をクリックします。
  4. 名前には「aws_integration」と入力します。
  5. 統合タイプには「AWS」を選択します。
  6. 上記のアクセスキーIDとシークレットアクセスキーの値を入力します。
  7. 作成をクリックして統合を作成します。

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

パイプラインの更新

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

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

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

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

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

JFrogで結果を表示

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

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

    多くの場合、コンポーネントを更新するだけでXrayがこれを示します。

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

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

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

訳したページ

JFrog Platform with Docker Compose & ECS :: On Your Own Setup
AWS Modernization Workshop

コメント

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