paint-brush
AWS、K8S、Docker、Ansible、Git、Github、Apache Maven、Jenkins を操纵した CI/CD パイプラインの構築 に@zufarexplained
38,340 測定値
38,340 測定値

AWS、K8S、Docker、Ansible、Git、Github、Apache Maven、Jenkins を操纵した CI/CD パイプラインの構築

Zufar Sunagatov46m2023/09/07
Read on Terminal Reader

長すぎる; 読むには

Zufar Sunagatov を操纵して、AWS、K8S、Docker、Ansible、Apache Maven、Git、Github、Jenkins を操纵して高度な CI/CD パイプラインを作成する方式を学びます。このチュートリアルを終えると、Github 上のどのプロジェクトにも適用できる最新の CI/CD パイプラインをすぐに操纵できるようになります。
featured image - AWS、K8S、Docker、Ansible、Git、Github、Apache Maven、Jenkins を操纵した CI/CD パイプラインの構築
Zufar Sunagatov HackerNoon profile picture
0-item
1-item




前回の記事 「マイクロサービス アーキテクチャ パターン パート 1: 分化パターン」では、マイクロサービスの魅力的な天下について詳しく説明しました。これは、マイクロサービスとそのパターンに関する私の包含的な記事シリーズの始まりでした。


論理的なステップとしては、このシリーズの第 2 部に進むことになりますが、次に調査してお話ししたいのは、これらのマイクロサービスをエンド ユーザーにシームレスに供给する主要なプロセスであると判定しました。


コンテンツの提要

  • モチベーション
  • [モジュール 1]: AWS EC2 仮想サーバー
  • [モジュール 2]: Jenkins サーバー
  • [モジュール 3]: Git と Github
  • [モジュール 4]: Apache Maven
  • [モジュール 5]: ドッカー
  • [モジュール 6]: Ansible
  • [モジュール 7]: Kubernetes
  • 結論
  • 著者について



モチベーション

CI/CD は、アプリ開発のさまざまな段階に自動化を追加することで実現される、アプリを顧客に配信するための手段です。 CI/CD (継続的インテグレーションと継続的デプロイメント) を掌握することで、開発者はバックエンド プロジェクトの功效物がプロジェクト リポジトリの境地を越えてどのように存在するかをより深く懂得できるようになると私は信じています。この懂得は、開発者の視点に底子的な変化をもたらす能够性もあります。自分の仕事を単にコード行として見るのではなく、プロジェクトのより広範なコンテキストを価値のある製品として受け入れることができるようになります。


この記事では、実際の応用を通じて CI/CD プロセスをわかりやすく説明することを目标としています。ステップバイステップのチュートリアルをモジュールごとに分けて説明し、CI/CD パイプラインを手動で構築します。これを行うために、 AWS、Docker、Kubernetes、Ansible、Git、Apache Maven、 Jenkinsなどの最新の DevOps ツールの力を活用します。それでは、この旅を始めましょう!


[モジュール 1]: AWS EC2 仮想サーバー

このモジュールは、AWS EC2 仮想サーバー インスタンスの作成専用です。この記事の一部として、Jenkins、Ansible、Kubernetes 用に 3 つの EC2 インスタンスをセットアップします。現時点では、次のモジュールに進み、「[モジュール 2]: Jenkins」、「[モジュール 6]: Ansible」、および「[モジュール 7]: Kubernetes」セクションでこのモジュールに再度アクセスできます。


ステップ 1: AWS アカウントを作成する

//aws.amazon.com にアクセスします。

[AWS アカウントの作成]ボタンをクリックします。


「AWS アカウントの作成」ボタンへのポインターが表现された AWS メイン Web ページのスクリーンショット


アカウント作成 Web ページの唆使に従います。


ステップ 2: AWS アカウントにサインインする

//console.aws.amazon.com/console/home に移動します。 「サインイン」ボタンをクリックします。

「サインイン」ボタンへのポインタが表现された AWS メイン Web ページのスクリーンショット


この Web ページに须要な資格情報をすべて入力します。


ステップ 3: EC2 仮想サーバーを見つける

検索ボックスで EC2 を検索します。

検索ボックスへのポインターが表现された AWS Web ページのスクリーンショット


[EC2 サービス]をクリックして、[EC2 仮想サーバー] を選択します。

「EC2」AWS サービスへのポインタが表现された AWS Web ページのスクリーンショット


[インスタンスの起動]ボタンをクリックします。

「インスタンスの起動」ボタンへのポインタが表现された AWS Web ページのスクリーンショット


ステップ 4: 「名前とタグ」セクションを構成する

「名前とタグ」セクションに進みます。

「名前とタグ」セクションへのポインターが表现された AWS Web ページのスクリーンショット


「名前」セクションに新しい AWS EC2 仮想サーバー インスタンスの名前を入力します。

「名前とタグ」セクションの「名前」入力ボックスへのポインターが表现された AWS Web ページのスクリーンショット


「追加タグを追加」をクリックして、仮想サーバーにタグを追加することもできます。


ステップ 5: 「アプリケーションと OS イメージ (Amazon マシン イメージ)」セクションを構成する


「アプリケーションと OS イメージ (Amazon マシン イメージ)」セクションに進みます。

「アプリケーションと OS イメージ (Amazon マシン イメージ)」セクションへのポインタが表现された AWS Web ページのスクリーンショット


仮想サーバーを無料でプレイするには:

  1. 仮想サーバーのオペレーティング システム ( Amazon Linux)を選択します。
  2. [Amazon Machine Image (AMI)]セクションで、無料操纵枠の対象タグを持つマシンを選択します。



「アプリケーションと OS イメージ (Amazon マシン イメージ)」セクションの「OS」ボタンと「マシン タイプ」ボタンへのポインタが表现された AWS Web ページのスクリーンショット


ステップ 6: 「インスタンスタイプ」セクションを構成する

「インスタンスタイプ」セクションに進みます。

「インスタンスタイプ」セクションへのポインタが表现された AWS Web ページのスクリーンショット


仮想サーバーを無料でプレイするには:

[インスタンス タイプ]セクションで、無料操纵枠対象タグを持つタイプを選択します。

私の場合、それはt2.micro (ファミリー: t2 1cCPU 1 GiB メモリ、現在の世代: true)です。



「インスタンス タイプ」セクションの「インスタンス タイプ」ドロップダウンへのポインタが表现された AWS Web ページのスクリーンショット


ステップ 7: 「ストレージの構成」セクションを構成する

「ストレージの構成」セクションに進みます。

「ストレージの構成」セクションへのポインターが表现された AWS Web ページのスクリーンショット


仮想サーバーを無料でプレイするには:

デフォルト設定を変更しないでください。無料操纵枠の対象となるお客様は、30 GB の EBS 汎用 (SSD) または磁気ストレージを动手できます。



「ストレージの構成」セクションにあるストレージの能够な構成へのポインターが表现された AWS Web ページのスクリーンショット


ステップ 8: 「ネットワーク設定」セクションを構成する

「ネットワーク設定」セクションに進みます。

「ネットワーク設定」セクションへのポインターが表现された AWS Web ページのスクリーンショット


仮想サーバーのセキュリティを設定する须要があります。これをする、

  1. 「セキュリティグループの作成」ボタンをクリックします。
  2. 「セキュリティ グループ名」セクションに新しいセキュリティ グループの名前を追加します。
  3. 「説明」セクションに新しいセキュリティ グループの説明を追加します。

デフォルトでは、仮想サーバーは (タイプ - SSH、プロトコル - TCP、ポート - 22 ) 経由でアクセスできます。追加の接続タイプが须要な場合は、追加の受信セキュリティ グループ ルールを追加して接続タイプを追加します。



「ネットワーク設定」セクションの「セキュリティ グループ」へのポインタが表现された AWS Web ページのスクリーンショット


ステップ 9: 「キーペア (ログイン)」セクションを構成する

「キーペア(ログイン)」セクションに進みます。

「Ket ペア (ログイン)」セクションへのポインターが表现された AWS Web ページのスクリーンショット


新しいキーペアをまだ作成していない場合は作成します。

「Ket ペア (ログイン)」セクションの「キー ペア名」、「キー ペア タイプ」、「奥秘キー ファイル情势」へのポインターが表现された AWS Web ページのスクリーンショット


「キーペア」をまだ作成していない場合:

  1. 「新しいキーペアの作成」ボタンをクリックします。
  2. 「キー ペア名」セクションで新しいキー ペアに名前を付けます。
  3. キーペアのタイプRSAまたはED25519を選択します。私はRSAタイプを選びました。
  4. 奥秘キーのファイル情势を選択します。 .pem.ppkの選択。私は.pem情势を選択します。
  5. 「キーペアの作成」ボタンをクリックします。
  6. 奥秘キー ファイルをダウンロードするように求めるポップアップ ウィンドウが表现されます。赞成してファイルをコンピュータにダウンロードします。

ステップ 10: EC2 仮想サーバーインスタンスを起動する


[インスタンスの起動]ボタンをクリックして EC2 仮想サーバー インスタンスを起動します。

「インスタンスの起動」ボタンへのポインタが表现された AWS Web ページのスクリーンショット


EC2 仮想サーバー インスタンスの作成プロセスが完了すると、次のように表现されます。


EC2 仮想サーバー インスタンスの作成プロセスが普通に完了したことを示す「胜利」告诉を表现する AWS Web ページのスクリーンショット


次に、 「すべてのインスタンスを表现」ボタンをクリックして「インスタンス」セクションに移動する须要があります。


実行中の EC2 インスタンスへのポインターが表现された AWS Web ページのスクリーンショット

これで、AWS EC2 仮想サーバー インスタンスが実行されていることがわかります。



[モジュール 2]: Jenkins サーバー

次に、EC2 仮想サーバー インスタンスで JenkinsServer を構成しましょう。

ステップ 1: AWS EC2 仮想サーバーインスタンスを作成する

Jenkins を実行するには仮想サーバーが须要です。

このチュートリアルの「[モジュール 1]: AWS EC2 仮想サーバー」セクションの手順に従ってこのステップを完了し、JenkinsServer という名前の EC2 仮想サーバー インスタンスを作成します。

セキュリティグループ設定を追加することを忘れないでください。これにより、 JenkinsSSH がそれぞれポート808022で動作できるようになります。


EC2 仮想サーバー インスタンスを区別するには、 「JenkinsServer」という名前を操纵します。

新しい「JenkinsServer」 AWS EC2 インスタンス用に「CI_CD_Pipeline」セキュリティ グループと「CI_CD_Pipeline_Key_Pair」を作成します。記事内でさらに再操纵できます。


ステップ 2: AWS EC2 仮想サーバー インスタンスに接続する

AWS コンソールのホームページEC2 办理コンソールのダッシュボードインスタンスに移動します。

次に、 JenkinsServerを選択し、 「接続」ボタンをクリックします。

「接続」ボタンへのポインタが表现された AWS 「インスタンス」Web ページのスクリーンショット


すると、この Web ページが表现されます。もう一度「接続」ボタンをクリックしてください。

「接続」ボタンへのポインタが表现された AWS 「インスタンスへの接続」Web ページのスクリーンショット


これで、EC2 仮想サーバー インスタンスのオンライン ターミナルが表现されます。

AWS EC2 仮想サーバーインスタンスのオンラインターミナルのスクリーンショット


ステップ 3: Jenkins リポジトリをダウンロードする

次に、EC2 仮想サーバー インスタンスに Jenkins をダウンロードする须要があります。

次の唆使に従ってください。


  1. Jenkins のダウンロードに移動します。

  2. 安靖版 (LTS) および凡是リリース (毎週) のオプションが表现されます。 LTS オプションを選択します。


このWebページが表现されます。

Jenkins ダウンロード Web ページのスクリーンショット


  1. 「sudo get..」コマンドをコピーして実行すると、インターネット上の Jenkins リポジトリから Jenkins ファイルがダウンロードされ、EC2 仮想サーバー インスタンス上の指定された場所に保管されます。
 sudo wget -O /etc/yum.repos.d/jenkins.repo //pkg.jenkins.io/redhat-stable/jenkins.repo

これで Jenkins がダウンロードされました。


ステップ 4: Jenkins キーをインポートする

Jenkins のインストールを完了するには、Jenkins キーをインポートする须要があります。

Jenkins キーをインポートするには、 「sudo rpm..」コマンドをコピーして実行する须要があります。


 sudo rpm --import //pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

このようにして、 「rpm」パッケージ マネージャーは、インストールする Jenkins パッケージが Jenkins プロジェクトによって公開されたものとまったく同じであること、および改ざんまたは破損していないことを確認できます。


ステップ 5: Java をインストールする

Jenkins を実行するには、EC2 仮想サーバー インスタンスにJavaをインストールする须要があります。

Javaをインストールするには、次のコマンドを操纵します。


 sudo amazon-linux-extras install java-openjdk11 -y


次のコマンドを操纵して、 Javaが正しくインストールされたかどうかを確認します。

 java -version


そのようなものが見られます。

JDK 11 がインストールされた AWS EC2 仮想サーバー インスタンスのオンライン ターミナルのスクリーンショット


ステップ 6: fontconfig をインストールする

Jenkins を実行するには、EC2 仮想サーバー インスタンスにfontconfigをインストールする须要があります。

このコマンドを操纵します。

 sudo yum install fontconfig java-11-openjdk -y


Fontconfig は、システム全部のフォント構成、カスタマイズ、アプリケーション アクセスを供给するように設計されたライブラリです。 Jenkins にはフォントをレンダリングする機能があるため、Jenkins にはこれが须要です。


ステップ 7: Jenkins をインストールする

前のステップでは、特定の Jenkins リポジトリを操纵するように EC2 仮想サーバー インスタンスを構成し、このリポジトリに関連付けられた GPG キーをインポートしました。次に、追加した Jenkins も含め、認識しているすべてのリポジトリを検索して Jenkins パッケージを見つけるコマンドを実行する须要があります。 Jenkins リポジトリで Jenkins パッケージを見つけると、ダウンロードしてインストールします。


このコマンドを実行してみましょう。

 sudo yum install jenkins -y


ステップ 8: Jenkins を開始する

このコマンドを操纵して Jenkins を起動できます。

 sudo systemctl start jenkins


Jenkins が実行されていることを確認するには、次のコマンドを操纵します。

 sudo systemctl status jenkins


以下のスクリーンショットに着力がそのまま表现されます。

Jenkins がインストールされた AWS EC2 仮想サーバー インスタンスのオンライン ターミナルのスクリーンショット


これで、Jenkins が起動して実行されるようになります。

ステップ 9: Jenkins にアクセスする

Jenkins アプリケーションにアクセスするには、肆意の Web ブラウザを開いて、EC2 インスタンスのパブリック IP アドレスまたはドメイン名に続いてポート 8080 を入力します。


 //<your-ec2-ip>:8080


初めて Jenkins にアクセスすると、自動天生されたパスワードでロックされます。

AWS EC2 仮想サーバーにインストールされた Jenkins と办理者パスワードへのポインタのスクリーンショット


次のコマンドを操纵して、このパスワードを表现する须要があります。

 sudo cat /var/lib/jenkins/secrets/initialAdminPassword


このパスワードをコピーし、ブラウザに戻り、办理者パスワード フィールドに貼り付けて、[続行] をクリックします。


すると、このWebページが表现されるようになります。


「Jenkins のカスタマイズ」Web ページへのポインタが表现された、AWS EC2 仮想サーバーにインストールされた Jenkins のスクリーンショット


これで、Jenkins サーバーを操纵できるようになりました。


ステップ 10: 新しい Jenkins パイプラインを作成する

これで、Jenkins が普通に動作しているので、Jenkins パイプラインの作成を開始できます。 Jenkins パイプラインを作成するには、新しい「Freestyle プロジェクト」を作成する须要があります。新しい「Freestyle プロジェクト」を作成するには、Jenkins ダッシュボードに移動し、 「新しい項目」ボタンをクリックする须要があります。


「新しい項目」ボタンへのポインターが表现された Jenkins ダッシュボード Web ページのスクリーンショット


Github の名前「Freestyle プロジェクト」(「パイプライン」という名前は今後操纵されます) を入力し、 「OK」ボタンをクリックします。


「項目名」項目ボックスへのポインターが表现された Jenkins 新しい項目 Web ページのスクリーンショット


次に、パイプラインの説明を入力します。

「説明」入力ボックスへのポインターが表现された Jenkins ジョブ構成 Web ページのスクリーンショット


次に、「適用」ボタンをクリックして「保管」します。その後、このチュートリアルで構築するパイプラインの基礎を作成したことになります。



[モジュール 3]: Git と Github

Jenkins が AWS EC2 仮想サーバー インスタンス上で実行されるようになったので、パイプラインを操纵して Git を構成できます。

Git は、ソフトウェア チームが特別な種類のデータベース内のコードに対するすべての変更を追跡できるように設計された、の分离バージョン办理システム (VCS) です。間違いがあった場合、開発者は時計を戻し、コードの之前のバージョンを比較して、チームメンバー全員への紊乱を最小限に抑えながら間違いを批改することができます。 VCS は特に次の場合に役立ちます。 なぜなら、開発時間を短縮し、デプロイメントの胜利率を高めるのに役立つからです [1]。

最も普通的なバージョン办理システムである Git を操纵すると、プロジェクトの Github リポジトリから、Jenkins がインストールされている EC2 仮想サーバー インスタンスに最新のコードをプルできます。


ステップ 1: Git をインストールする

このコマンドを操纵して Git をインストールします。

 sudo yum install git -y


次に、次のコマンドを操纵して、Git が動作していることを確認します。

 git --version

現在、Git は EC2 仮想サーバー インスタンス上で普通に動作しています。


ステップ 2: Jenkins ダッシュボードを開く

Git は EC2 仮想サーバー インスタンス上で普通に動作しているため、Jenkins を Git と統合できるようになりました。

この統合を開始するには、Jenkins Github プラグインをインストールしましょう。

Jenkins ダッシュボード セクションに移動します。


Jenkins ダッシュボードのスクリーンショット


ステップ 3: Jenkins プラグイン マネージャーを開く

「Jenkins の办理」ボタンをクリックし、 「プラグインの办理」ボタンをクリックします。

「プラグインの办理」ボタンへのポインターが表现された Jenkins ダッシュボードのスクリーンショット


ステップ 4: Github Jenkins プラグインを見つける

「操纵能够なプラグイン」ボタンをクリックします。

「操纵能够なプラグイン」ボタンへのポインターが表现された Jenkins プラグイン マネージャー Web ページのスクリーンショット


Githubプラグインの検索ボックスを見つけます。


「Github」プラグインへのポインターが表现された Jenkins Plugin Manager Web ページのスクリーンショット


Githubプラグインを選択します。


ステップ 5: Github Jenkins プラグインをインストールする

Githubプラグインを選択します。そして、 「复兴動せずにインストール」ボタンをクリックします。


「复兴動せずにインストール」ボタンへのポインタが表现された Jenkins Plugin Manager Web ページのスクリーンショット


Github プラグインのダウンロードが完了するまで待ちます。


Github プラグインをダウンロードしている Jenkins Plugin Manager Web ページのスクリーンショット


はい! Jenkins Github プラグインがインストールされています。


ステップ 6: Github Jenkins プラグインを構成する

GitHub Jenkins プラグインがインストールされたので、最終的に Jenkins を Git と統合するようにこのプラグインを構成できます。そのためには、「トップページに戻る」ボタンをクリックしてメインページに戻る须要があります。


「トップページに戻る」ボタンへのポインタが表现された Jenkins Plugin Manager Web ページのスクリーンショット


次に、メイン ページで、 「Jenkins の办理」ボタンをクリックし、 「グローバル ツール構成」ボタンをクリックする须要があります。


「グローバル ツール構成」ボタンへのポインターが表现された Jenkins Plugin Manager Web ページのスクリーンショット


次に、グローバル ツール構成 Web ページで、Git セクションに移動する须要があります。


「名前」および「Git 実行能够ファイルへのパス」入力ボックスへのポインターが表现された Jenkins Global Tool Configuration Web ページのスクリーンショット


[Git] セクションでは、コンピューター上の Git の名前とパスを指定して Git を構成する须要があります。


次に、 「適用」ボタンと「保管」ボタンをクリックします**。**


これで、Jenkins Github プラグインの構成が完了しました。


ステップ 7: Git をパイプラインに統合する

Jenkins Github プラグインがインストールされて構成されたので、パイプライン内でこのプラグインを操纵できるようになります。これにより、モジュール 2 で作成したパイプラインが、指定した GitHub リポジトリからプロジェクト コードをプルできるようになります。


このプラグインをパイプラインに統合するには、[ソース コード办理] セクションに移動し、パイプラインで Git を選択する须要があります。次に、プロジェクト リポジトリの URL を指定する须要があります。プロジェクト リポジトリが Github で公開されている場合、認証情報を供给する须要はありません。プロジェクト リポジトリが Github 上でプライベートである場合は、認証情報を供给する须要があります。


「ソース コード办理」設定を含む Jenkins ジョブ構成 Web ページのスクリーンショット


次のリポジトリ URL: で私のプロジェクトを操纵できます。

それをコピーして「リポジトリ URL」入力に貼り付けるだけです。次に、 「適用」ボタンと「保管」ボタンをクリックして、Git とパイプラインの統合を完了します。


ステップ 8: パイプラインに統合された Git をテストする

これで、更新されたパイプラインを操纵して、Github からプロジェクトをプルできるようになりました。これを行うには、**「今すぐビルド」** ボタンをクリックする须要があります。その結果、ビルド履歴にビルドが胜利したことが表现されます。


「今すぐビルド」ボタンと「ビルド履歴」セクションへのポインターを含む Jenkins Web ページのスクリーンショット



ビルド履歴から最后のビルドを開きます。

胜利したジョブ結果を含む Jenkins Pull_Code_From_Github_Job のスクリーンショット


これで、最后のビルドの胜利したジョブ結果が表现されます。 AWS EC2 ターミナルを開いた場合。パイプラインが普通に動作していることを確認できます。


このコマンドを操纵するだけです。

 cd /var/lib/jenkins/workspace/{your pipeline name}


このようにして、Github からのプロジェクトが AWS EC2 仮想サーバー インスタンスにプルされたことがわかります。


EC2 インスタンスのターミナルにダウンロードされた Github プロジェクトのスクリーンショット



[モジュール 4]: Apache Maven

Apache Maven は、ソフトウェア開発において広く操纵されているビルド自動化およびプロジェクト办理ツールです。プロジェクトの依存関係を办理し、一貫したビルド ライフサイクルを供给することで、コードのコンパイル、テスト、パッケージ化のプロセスを公道化します。 Maven は、XML ベースの構成ファイル (POM ファイル) を操纵してプロジェクトの構造、依存関係、およびタスクを定義し、開発者が複雑なソフトウェア プロジェクトを効率的に办理および展開できるようにします。


Git をパイプラインに統合したので、プロジェクトをビルド、テスト、パッケージ化できる Apache Maven を組み込むことでパイプラインをさらに強化できます。これを行うには、Jenkins と Git がインストールされている AWS EC2 仮想サーバー インスタンスに Apache Maven をインストールする须要があります。


ステップ 1: Apache Maven をダウンロードする

Apache Maven をダウンロードするには、 「/opt」ディレクトリに移動します。

 cd /opt


そして、このコマンドを操纵します。

 sudo wget //dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz


このコマンドは、最新の公式 Apache Maven をダウンロードします (公式 Apache Maven Web サイトで最新バージョンを確認してください)。最新の公式 Apache Maven リリースを見つけるには、リンクを操纵してください。


ステップ 2: アーカイブから Apache Maven を抽出する

次のコマンドを操纵して、ダウンロードしたアーカイブから Apache Maven を抽出します。

 sudo tar -xvzf apache-maven-*.tar.gz


ステップ 3: JAVA_HOME と M2_HOME を追加する

このコマンドを操纵してルート フォルダーに移動します。

 cd ~


このコマンドを操纵して.bash_profileファイルを編集します。

 vi .bash_profile


JAVA_HOME変数と M2_HOME 変数を追加します。


JAVA_HOME変数には JDK11 へのパスを割り当て、 M2_HOME変数には Maven ディレクトリへのパスを割り当てます。


JDK パスを検索するには、次のコマンドを操纵します。

 sudo find / -name java 



.bash_profile ファイルを含む AWS EC2 仮想サーバー インスタンスのターミナル Web ページのスクリーンショット


VIMの使い方

  • ファイルを編集するには、キーボード ボタン「I」を押してデータを挿入します。
  • ファイルを保管するには、キーボード ボタン「esc」を押して「:w」と入力します。
  • ファイルを終了するには、キーボード ボタン「esc」を押して「:q」と入力します。

変更を保管します。


次に、このコマンドを実行してシステム変数を更新します。

 source .bash_profile


$PATHを確認するには、次のコマンドを操纵します。

 echo $PATH


Apache Maven を確認するには、次のコマンドを操纵します。

 mvn -v


すべてを正しく実行すると、Apache Maven のバージョンを表现できるようになります。

Apache Maven のバージョンを操纵した AWS EC2 仮想サーバー インスタンスのターミナル Web ページのスクリーンショット


ステップ 4: Apache Maven Jenkins プラグインをインストールする

Apache Maven は EC2 インスタンスで操纵できるため、Apache Maven プラグインをインストールしてパイプラインと統合できます。


これを実現するには、次の手順に従います。

  1. 「ダッシュボード」 →「Jenkinsの办理」→「プラグインの办理」→「操纵能够」に移動します。
  2. 検索ボックスに「Maven」と入力します。
  3. 「Maven Integration」プラグインを選択します。


AWS EC2 仮想サーバーにインストールされた Jenkins と Maven プラグインへのポインターのスクリーンショット


ダウンロードプロセスが終了するまで待ちます。


そして「トップページに戻る」ボタンをクリックしてください。

AWS EC2 仮想サーバーにインストールされた Jenkins と Maven プラグインのダウンロード プロセスへのポインターのスクリーンショット


ステップ 5: Apache Maven Jenkins プラグインを構成する

Apache Maven Jenkins プラグインが普通にインストールされると、モジュール 2 と 3 で作成および更新したパイプライン内でこのプラグインを操纵できるようになります。


これを行うには、次の手順に従います。

  1. 「ダッシュボード」 →「Jenkinsの办理」→「グローバルツール構成」→「JDK」に移動します。
  2. 「JDKを追加」ボタンをクリックします。
  3. 「自動的にインストールする」のチェックを外します。



AWS EC2 仮想サーバーにインストールされた Jenkins と JDK 設定へのポインターのスクリーンショット



次に「Maven」セクションに進みます。 「Maven を追加」ボタンをクリックします。 「自動的にインストールする」のチェックを外します。

次に、名前MAVEN_HOMEパスを追加します。



AWS EC2 仮想サーバーにインストールされた Jenkins と Apache Maven 構成へのポインターのスクリーンショット



「適用」ボタンと「保管」ボタンをクリックします。

これで、Apache Maven Jenkins プラグインの構成が完了しました。


ステップ 6: Apache Maven をパイプラインに統合する

Apache Maven GitHub プラグインがインストールされて構成されたので、パイプライン内で Apache Maven を操纵できるようになりました。これにより、「[モジュール 2]: Jenkins Server」で作成したパイプラインでプロジェクト コードを構築し、jar アーティファクトを作成できるようになります。


Apache Maven をパイプラインに統合するには、次の手順に従う须要があります。

  1. 「ダッシュボード」 →「CI_CD_Pipeline」→「構成」→「ビルドステップ」に移動します。
  2. 「ビルドステップを追加」ボタンをクリックします。
  3. 「トップレベルの Maven ターゲットを呼び出す」オプションを選択します。
  4. 「Maven バージョン」として「Apache-Maven」を選択します
  5. 「目標」入力に「クリーンパッケージ」コマンドを追加します。
  6. 「詳細」ボタンをクリックします。
  7. 「POM」入力に「pom.xml」を追加します。



「適用」ボタンと「保管」ボタンへのポインターを含む、パイプライン構成の「ビルドステップ」セクションのスクリーンショット



最後に、 「適用」ボタンと「保管」ボタンをクリックして、Apache Maven とパイプラインの統合を完了する须要があります。

ステップ 7: パイプラインに統合された Apache Maven をテストする

これで、更新されたパイプラインを操纵して Github プロジェクトを構築できるようになりました。これを行うには、**「今すぐビルド」** ボタンをクリックする须要があります。その結果、ビルド履歴にジョブの胜利結果が表现されます。

AWS EC2 ターミナルを開いた場合。パイプラインが普通に動作していることを確認できます。


このコマンドを操纵するだけです。

 cd /var/lib/jenkins/workspace/{your pipeline name}/target


こうすることで、GitHub からのプロジェクトのビルドが胜利したことを示す JAR アーティファクトを確認できます。



[モジュール 5]: ドッカー

次に、Docker と Ansible をインストールする新しい EC2 インスタンスを「Ansible Server」という名前で作成しましょう。


ステップ 1: AWS EC2 仮想サーバーインスタンスを起動する

このチュートリアルの「 AWS EC2 仮想サーバー インスタンスの起動」セクションの手順に従って、このステップを完了します。セキュリティグループ設定を追加することを忘れないでください。これにより、Docker と SSH がそれぞれポート 8080 と 22 で動作できるようになります。


ステップ 2: AWS EC2 仮想サーバー インスタンスに接続する

「接続」ボタンをクリックします。

「接続」ボタンへのポインタが表现された AWS Web ページのスクリーンショット


これで、EC2 仮想サーバー インスタンスのオンライン ターミナルが表现されます。

AWS EC2 仮想サーバーインスタンスのオンラインターミナルのスクリーンショット


 sudo chown ansible-admin:ansible-admin /opt/docker


ステップ 3: Ansible EC2 仮想サーバーに Docker をインストールします。

次に、Ansible EC2 インスタンスに docker をインストールする须要があります。これを行うには、新しい docker フォルダーを作成する须要があります。

 sudo mkdir /opt/docker


次に、次のコマンドを実行して docker をインストールします。

 sudo yum install docker -y


ステップ 4: 現在のユーザーを Ansible EC2 仮想サーバーの Docker グループに追加する

Docker 办理者権限を赋予するには、現在のユーザー「ansible-admin」をEC2 仮想サーバー「AnsibleServer」の Docker グループに追加する须要があります。


 sudo usermod -a -G docker ansible-admin


これらの変更を有効にするには、ログアウトしてから再度ログインする须要があります。


その後、次のコマンドを実行できます

id ansible-admin


新しい docker ユーザーが存在することを確認します。


Docker ユーザーへのポインターを含む Ansible EC2 インスタンスのスクリーンショット


ステップ 5: Docker を起動する

これで、Docker が Ansible EC2 インスタンスにインストールされたので、次のコマンドを実行して起動できるようになります。

 sudo systemctl start docker


Docker が起動すると、次のコマンドを実行できます。

 sudo systemctl status docker


docker がアクティブで現在実行中であることを確認します。

アクティブな Docker ステータスを示す Ansible EC2 インスタンスのスクリーンショット


ステップ 6: Dockerfile を作成する

パイプラインの最終バージョンでは、プロセスに GitHub プロジェクトから新しい Docker イメージを作成し、それを Docker Hub にプッシュすることが含まれます。これを実現するには、GitHub プロジェクトに Dockerfile が含まれている须要があります。


[モジュール 3]: Git と Github」モジュールで供给されたプロジェクト「Hello」を操纵した場合、このプロジェクト リポジトリには既に Dockerfile が含まれているため、新しい Dockerfile を作成する须要はありません。


 FROM eclipse-temurin:17-jre-jammy ENV HOME=/opt/app WORKDIR $HOME ADD hello-0.0.1-SNAPSHOT.jar $HOME ENTRYPOINT ["java", "-jar", "/opt/app/hello-0.0.1-SNAPSHOT.jar" ]


单独のプロジェクト リポジトリを操纵していて、そこに Dockerfile が含まれていない場合は、新しい Dockerfile を作成する须要があります。


新しい Dockerfile を作成するには、次のコマンドを実行すると、新しいファイルが作成されます。

 sudo touch Dockerfile


次に、コンテナ化されたアプリケーション環境を構築する方式を説明する一連のコマンドをこのファイルに入力します。これらのコマンドには、イメージへのファイルのコピー、ソフトウェアのインストール、環境変数の設定、コンテナーの構成などのアクションが含まれます。


これらのコマンドを Dockerfile に入力するには、次のコマンドを実行します。

 vim Dockerfile

Dockerfile を操纵する準備ができました。


ステップ 7: Docker にログインする

Dockerfile を操纵する準備ができたので、**"JenkinsServer"**EC2 インスタンスからプロジェクトの JAR アーティファクトをコピーし、それを"AnsibleServer" EC2 インスタンスに貼り付けます。この転送はパイプラインを通じてさらに自動化されることに注重することが主要です。

このステップを完了すると、セットアップした Docker 環境とともに Dockerfile をテストする準備が整います。


テストを開始する前に、Dockerhub で必ず認証を行ってください。次のコマンドを実行します。

 docker login


このコマンドでは、ユーザー名とパスワードを含む Dockerhub ログイン資格情報の入力を求められます。

「AnsibleServer」EC2インスタンスで胜利したdockerログインのスクリーンショット


これで、 Dockerへのログインプロセスが完了し、テストを続行する準備が整いました。

ステップ 8: Docker 環境と Dockerfile をテストする

Dockerhub へのログインが完了すると、準備した Dockerfile のテストを開始する準備が整いました。


このコマンドを実行してdockerイメージを作成します。

 docker build -t hello:latest .


次に、後続のコマンドを実行して、イメージの Dockerhub へのアップロードを轻易にするタグを確立します。

 docker tag hello:latest zufarexplainedit/hello:latest


最後に、このコマンドを実行して、Docker イメージを Dockerhub にプッシュします。

 docker push zufarexplainedit/hello:latest


これらの手順に従って、Dockerhub アカウントに移動して、新しいイメージが表现されるかどうかを確認します。

新しい画像が追加された Dockerhub アカウントのスクリーンショット


画像が効果的に追加されたことが確認できるはずです。この結果により、Docker 環境のインストールが胜利し、Dockerfile が正しいことが確認されます。



[モジュール 6]: Ansible

次に、EC2 仮想サーバー インスタンス上で Ansible サーバーを構成しましょう。


ステップ 1: AWS EC2 仮想サーバーインスタンスを作成する

Ansible を実行するには仮想サーバーが须要です。


このチュートリアルの「[モジュール 1]: AWS EC2 仮想サーバー」セクションの唆使に従ってこのステップを完了し、Ansible の EC2 仮想サーバー インスタンスを作成します。

セキュリティグループ設定を追加することを忘れないでください。これにより、 AnsibleSSH がそれぞれポート808022で動作できるようになります。


EC2 仮想サーバー インスタンスを区別するには、 「AnsibleServer」という名前を操纵します。

「CI_CD_Pipeline」セキュリティ グループと「CI_CD_Pipeline_Key_Pair」を新しい「AnsibleServer」 EC2 インスタンスに再操纵できます。


ステップ 2: AWS EC2 仮想サーバー インスタンスに接続する

AWS コンソールのホームページ → EC2 办理コンソールのダッシュボード → インスタンス → AnsibleServer に移動します。


次に「接続」ボタンをクリックします。

「接続」ボタンへのポインタが表现された AWS Web ページのスクリーンショット


すると、この Web ページが表现されます。もう一度「接続」ボタンをクリックしてください。


「接続」ボタンへのポインタが表现された AWS 「インスタンスへの接続」Web ページのスクリーンショット


これで、EC2 仮想サーバー インスタンスのオンライン ターミナルが表现されます。

AWS EC2 仮想サーバーインスタンスのオンラインターミナルのスクリーンショット


次に、EC2 仮想サーバー インスタンス上で Ansible Server を構成しましょう。

ステップ 3: 「AnsibleServer」AWS EC2 仮想サーバー インスタンスのホスト名を変更する

EC2 仮想サーバー インスタンスで AnsibleServer を構成する場合、最后に行う须要があるのは、ホスト名を変更することです。


やりましょう。次のコマンドを実行してホスト名ファイルを開きます。

 sudo vi /etc/hostname


次のようなものが表现されるはずです。

ホスト名ファイルを含む AWS EC2 仮想サーバー インスタンスのスクリーンショット


このホスト名を「ansible-server」に置き換えます。次に、复兴動します。

 sudo init 6 



ホスト名へのポインターが表现された AWS EC2 仮想サーバー インスタンスのターミナルのスクリーンショット


ステップ 4: 「AnsibleServer」AWS EC2 仮想サーバー インスタンスに新しいユーザーを追加して構成する

次に、新しいansible-adminユーザーを AWS EC2 仮想サーバー インスタンスに追加しましょう。

これを行うには、次のコマンドを操纵します。


 sudo useradd ansible-admin


次に、 ansible-adminユーザーのパスワードを設定します。

 sudo passwd ansible-admin


また、 sudoersファイルを編集してユーザー権限を構成する须要があります。

 sudo visudo


このsudoersファイルに「ansible-admin ALL=(ALL) ALL」を追加します。

办理者権限へのポインタが表现された AWS EC2 仮想サーバー インスタンスのターミナルのスクリーンショット


また、 /etc/ssh/sshd_configファイルを編集して PasswordAuthentication を有効にする须要があります。

 sudo vi /etc/ssh/sshd_config 


办理設定へのポインターが表现された AWS EC2 仮想サーバー インスタンスのターミナルのスクリーンショット


次に、サービスをリロードしてこれらの変更を確認する须要があります。

 sudo service sshd reload


このコマンドを実行すると、次のように表现されます。


sshd リロード結果へのポインターが表现された AWS EC2 仮想サーバー インスタンス ターミナルのスクリーンショット


これで、このコマンドを操纵して、以降のすべてのコマンドに sudo を追加することを避けることができます。

 sudo su - ansible-admin


ステップ 5: AWS EC2 仮想サーバーインスタンスでキーを天生する

この記事では、K8s EC2 仮想サーバー インスタンスなどのリモート サーバーをさらに办理することを計画しています。このため、SSH キーを設定する须要があります。

 ssh-keygen


このコマンドを実行すると、次のように表现されます。

ssh-keygen の結果へのポインターが表现された AWS EC2 仮想サーバー インスタンスのターミナルのスクリーンショット


これで SSH キーが天生され、操纵できるようになりました。

ステップ 6: Ansible をインストールする

これで、 「AnsibleServer」 EC2 仮想サーバー インスタンスに Ansible をインストールできるようになりました。

やりましょう。


このコマンドを実行して Ansible をインストールします。

 sudo amazon-linux-extras install ansible2


Ansible を確認するには、次のコマンドを操纵します。

 ansible --version


このコマンドを実行すると、次のように表现されます。

sudo yum install ansible の結果へのポインターが表现された AWS EC2 仮想サーバー インスタンスのターミナルのスクリーンショット


ステップ 7: JenkinsServer EC2 インスタンスに Jenkins の「Publish over SSH」プラグインをインストールする

Ansible は「AnsibleServer」 EC2 仮想サーバー インスタンスにインストールされているため、Ansible と統合するように Jenkins を構成できます。 Jenkins を Ansible がインストールされている EC2 仮想サーバー インスタンスおよびKubernetesがインストールされている他の EC2 仮想サーバー インスタンスと統合するには、「Publish over SSH」プラグインをインストールする须要があります。


「ダッシュボード」 →「 Jenkinsの办理」「システムの構成」「操纵能够なプラグイン」に移動します。

次に、検索ボックスに「Publish over SSH」と入力します。


AWS EC2 仮想サーバーにインストールされた Jenkins と、「操纵能够なプラグイン」Web ページへのポインターのスクリーンショット


「复兴動せずにインストール」ボタンをクリックします。ダウンロードプロセスが終了するまで待ちます。


AWS EC2 仮想サーバーにインストールされた Jenkins と「ダウンロードの進行状況」Web ページへのポインタのスクリーンショット



これで、「Publish over SSH」プラグインが Jenkins EC2 仮想サーバー インスタンスにインストールされました。


ステップ 8: Jenkins の「Publish over SSH」プラグインを構成する

Apache Maven Jenkins プラグインが普通にインストールされると、モジュール 2 と 3 で作成および更新したパイプライン内でこのプラグインを操纵できるようになります。


これを行うには、次の手順に従います。


「ダッシュボード」「Jenkins の办理」「システムの構成」「SSH 経由で公開」に移動します。

「Publish over SSH」プラグインを操纵した AWS EC2 仮想サーバー インスタンス ターミナルのスクリーンショット


ホスト名、ユーザー名、奥秘キー (該当する場合はパスワード) など、须要なデータをスクリーンショットにあるとおりにすべて入力します。


「Publish over SSH」プラグインを操纵した AWS EC2 仮想サーバー インスタンス ターミナルのスクリーンショット


次に、 「適用」ボタンと「保管」ボタンをクリックします。


これで、 「Publish over SSH」 Jenkins プラグインの構成が完了しました。


次に、「設定のテスト」をクリックして、プラグインが正しく動作していることを検証します。



「Test Configuration」ボタンを備えた「Publish over SSH」プラグインのスクリーンショット


左側では、テスト プラグインの設定ステータスが「胜利」であることがわかります。これはプラグインの設定が正しいことを象征します。


ステップ 9: AnsibleServer に新しい Docker ディレクトリを作成する

AnsibleServer EC2 インスタンス上に、プロジェクト JAR が保管される新しいフォルダーを作成する须要があります。この jar は、後で Docker イメージを作成するために操纵されます。


はじめましょう。


AnsibleServer EC2 インスタンスの「/opt」フォルダーに移動します。

 cd /opt


そこに新しいフォルダー「docker」を作成します。

 sudo mkdir docker


この「docker」フォルダーに権限を与えます。

 sudo chown ansible-admin:ansible-admin docker


次に、このコマンドを実行して「docker」フォルダーの権限を確認します。

 ll


「docker」フォルダーに「ansible-admin」ユーザーでアクセスできることがわかります。


「AnsibleServer」EC2インスタンスの「docker」フォルダーのスクリーンショット


ステップ 10: 「Publish over SSH」 Github プラグインをパイプラインに統合する


「Publish over SSH」 Github プラグインがインストールおよび構成されたので、「[モジュール 2]: Jenkins Server」で作成したパイプラインにプラグインを統合して、プロジェクトの jar アーティファクトを「 JenkinsServer」から「AnsibleServer」


「Publish over SSH」 Github プラグインをパイプラインに統合するには、次の手順に従う须要があります。


  1. 「ダッシュボード」 →「CI_CD_Pipeline」→「構成」→「ビルド後のアクション」に移動します。
  2. 「ビルド後のアクションを追加」ボタンをクリックします。
  3. 「SSH 経由でビルド アーティファクトを送信する」オプションを選択します。
  4. 「SSH サーバー」セクションの「名前」入力に「AnsibleServer」を追加します**。**
  5. 「転送セット」セクションの「ソースファイル」入力に「target/*.jar」を追加します**.**
  6. 「転送セット」セクションの「プレフィックスの削除」入力に「target/」を追加します**。**
  7. 「転送セット」セクションの「リモート ディレクトリ」入力に「//opt/docker/」を追加します**。**
  8. ここでは、「転送セット」セクションの「実行コマンド」入力に空の笔墨列を入力するだけです。



パイプライン構成の「SSH 経由でビルド アーティファクトを送信する」セクションのスクリーンショット


最後に、 「適用」ボタンと「保管」ボタンをクリックして、 「SSH 経由で公開」プラグインとパイプラインの統合を完了する须要があります。


ステップ 11:パイプラインに統合されたGithub プラグイン「SSH 経由で公開」をテストする

これで、更新されたパイプラインを操纵して、プロジェクト jar アーティファクトを「 JenkinsServer」から「AnsibleServer」に転送できるようになりました。これを行うには、 「今すぐビルド」ボタンをクリックする须要があります。その結果、ビルド履歴にジョブの胜利結果が表现されます。


「AnsibleServer」 AWS EC2ターミナルを開いた場合。パイプラインが普通に動作していることを確認できます。

このコマンドを操纵するだけです。


 cd /opt/docker


こうすることで、GitHub からのプロジェクトのビルドが胜利したことを示す JAR アーティファクトを確認できます。

プロジェクト jar アーティファクトを含む /opt/docker ディレクトリのスクリーンショット


ステップ 12: Ansible ホストを構成する

Ansible Playbook を実行するときは、それを実行するホストを指定します。これは 2 つの方式で行うことができます。


  1. Playbook でホストを间接指定する: Playbook で、 hostsパラメーターを IP アドレスまたはホスト名のリストに設定できます。
  2. インベントリ ファイルを操纵する: Ansible では、インベントリ ファイルでホストのリストを定義し、Playbook の実行時にこのファイルを参照できます。デフォルトのインベントリ ファイルは/etc/ansible/hostsです。


/etc/ansible/hostsを編集すると、Playbook を実行するたびにホストの IP アドレスを書き出すことなく、ホストのグループを簡単に办理できます。


次のコマンドを実行して、AnsibleServer EC2 インスタンスのホストを調べてみましょう。

 sudo ifconfig 


AnsibleServer EC2 インスタンスのネットワークインターフェース設定のスクリーンショット


AnsibleServer EC2 インスタンス ホストを見つけたら、次のコマンドを実行して、それを Ansible hosts ファイルに追加できます。


 sudo vi /etc/ansible/hosts


「[ansible]」を参照として追加することもできます

Ansible hosts ファイルのスクリーンショット


サーバーのクラスターを办理していて、そのすべてにプレイブックを適用したい場合は、プレイブックで各サーバーの IP アドレスを指定する代わりに、すべてのサーバーをインベントリ ファイルのグループに追加して、プレイブック内のグループ。


ステップ 13: Ansible のローカルホストへのパスワードレス SSH 認証を構成する

Ansible は、リモート サーバー上のタスクを自動化するように設計されています。パスワードレス SSH 認証により、Ansible は手動でパスワードを入力しなくてもこれらのサーバーに接続できるようになります。

このコマンドを実行して、ansible-admin ユーザーの SSH キーを操纵して、自分のコンピューターから別のコンピューター (IP アドレス 172.31.34.41 のコンピューターなど) への宁静な接続を作成します。


 sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}


私の場合はこんな感じです。

 sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected] 


パスワードなしの ssh 認証のインストールが胜利した結果のスクリーンショット


「追加されたキーの数: 1」が表现されます。パスワードなしの SSH 認証のインストールが普通に完了したことを象征します。

ステップ 14: Docker タスク用の新しい Ansible プレイブックを作成する

Ansible の設定がすべて完了し、準備が整ったので、パイプライン用の新しい Ansible プレイブックを作成できます。この Playbook により、Ansible が新しい Docker イメージを作成して Dockerhub に送信できるようになります。

その方式は次のとおりです。


  1. まず、新しい Ansible Playbook ファイルを作成します。このコマンドを操纵するだけです。
 touch hello-app.yml


  1. 次に、新しく作成したhello-app.ymlファイルを編集します。このコマンドを操纵して編集用に開きます。
 vi hello-app.yml


  1. ファイル内に次の内容を入力します。
 --- - hosts: ansible user: root tasks: - name: create docker image command: docker build -t hello:latest . args: chdir: /opt/docker - name: create tag to push image onto dockerhub command: docker tag hello:latest zufarexplainedit/hello:latest - name: push docker image onto dockerhub command: docker push zufarexplainedit/hello:latest

Docker タスク用の Ansible プレイブックを操纵する準備ができました。

ステップ 13: Docker タスクを操纵して Ansible プレイブックをテストする

Ansible、Ansible Playbook、AnsibleServer、および JenkinsServer がすべて適切に構成されたら、Ansible Playbook をテストします。


Ansible プレイブックの場所に移動します。

 cd /opt/docker


次に、以下のコマンドを実行します。

 sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml


完了すると、Ansible プレイブックの実行結果が普通に表现されることがわかります。

Docker タスクの Ansible Playbook の普通な実行結果のスクリーンショット


さらに、Dockerhub アカウントにアクセスして、新しいイメージが表现されるかどうかを確認してください。


新しい画像が追加された Dockerhub アカウントのスクリーンショット


新しく追加された画像が表现されるはずです。この結果により、Ansible プレイブックが正しいことが確認されます。


ステップ 14: Ansible Docker タスクをパイプラインに統合する

「Publish over SSH」 Github プラグイン、Ansible、Docker がインストールおよび設定されたので、「[モジュール 2]: Jenkins Server」で作成したパイプラインにそれらをすべて統合して、プロジェクトの jar アーティファクトを転送できるようになりました。 「 JenkinsServer」から「AnsibleServer」に変更し、プロジェクトから新しい Docker イメージを構築して、この Docker イメージを Dockerhub にプッシュします。


これを実現するには、次の手順に従う须要があります。

  1. 「ダッシュボード」 →「CI_CD_Pipeline」→「構成」→「ビルド後のアクション」→「SSH 経由でビルド アーティファクトを送信」に移動します。
  2. 「Exec command」入力に「sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml」コマンドを追加します。


パイプライン構成の「SSH 経由でビルド アーティファクトを送信する」セクションのスクリーンショット


最後に、 「適用」ボタン「保管」ボタンをクリックして、パイプラインとの Ansible Docker タスクの統合を終了します。

ステップ 15:パイプラインに統合された「Docker タスクを含む Ansible プレイブック」をテストする

これで、アップグレードされたパイプラインをテストして、プロジェクトの jar アーティファクトを「 JenkinsServer」から「AnsibleServer」にシームレスに転送し、プロジェクトから新しい Docker イメージを構築して、この Docker イメージを Dockerhub にプッシュできるようになりました。これを行うには、 「今すぐビルド」ボタンをクリックする须要があります。その結果、ビルド履歴にジョブの胜利結果が表现されます。


さらに、Dockerhub アカウントにアクセスして、新しいイメージが表现されるかどうかを確認してください。


新しい画像が追加された Dockerhub アカウントのスクリーンショット


新しく追加された画像が表现されるはずです。この結果は、Docker タスクを含む Ansible プレイブックがパイプラインに普通に統合されたことを確認します。


[モジュール 7]: Kubernetes

次に、EC2 インスタンスで K8 を構成しましょう。新しい EC2 インスタンスを作成し、 Kubernetesクラスターとさらに対話するための kubectl コマンドライン ツールをインストールします。


ステップ 1: AWS EC2 仮想サーバーインスタンスを起動する

このチュートリアルの「 AWS EC2 仮想サーバー インスタンスの起動」セクションの手順に従って、このステップを完了します。


セキュリティグループ設定を追加することを忘れないでください。これにより、すべてのツールSSH がそれぞれポート808022で動作できるようになります。


EC2 仮想サーバー インスタンスを区別するには、 「K8sServer」という名前を操纵します。

「CI_CD_Pipeline」セキュリティ グループと「CI_CD_Pipeline_Key_Pair」を新しい「K8sServer」 EC2 インスタンスに再操纵できます。


ステップ 2: AWS EC2 仮想サーバー インスタンスに接続する

「接続」ボタンをクリックします。

「接続」ボタンへのポインタが表现された AWS Web ページのスクリーンショット


これで、EC2 仮想サーバー インスタンスのオンライン ターミナルが表现されます。

AWS EC2 仮想サーバーインスタンスのオンラインターミナルのスクリーンショット


ステップ 3: 「KubernetesServer」AWS EC2 仮想サーバー インスタンスのホスト名を変更する

EC2 仮想サーバー インスタンス上で KuberenetesServer を構成する場合、最后に行う须要があるのは、ホスト名を変更することです。


やりましょう。次のコマンドを実行してホスト名ファイルを開きます。

 sudo vi /etc/hostname


このようなものが表现されるはずです。

ホスト名ファイルを含む AWS EC2 仮想サーバー インスタンスのスクリーンショット


このホスト名を「kubernetes-server」に置き換えて复兴動します。

 sudo init 6


ホスト名が変更されました。

ホスト名へのポインターが表现された AWS EC2 仮想サーバー インスタンスのターミナルのスクリーンショット


ステップ 4: AWS CLI のバージョンを確認する

このコマンドを操纵してAWS のバージョンを確認します。

 aws --version


こうすることで、現在の aws-cli バージョンを確認できます。

aws バージョンのコマンド結果を含む AWS EC2 仮想サーバー インスタンスのオンライン ターミナルのスクリーンショット


バージョンaws-cli/1.18が表现される場合は、最新バージョンをダウンロードする须要があります。


ステップ 5: AWS CLI を更新する

EC2 インスタンスに古い aws-cli バージョンがあることがわかったので、それを更新する须要があります。それには、AWS → ドキュメント → AWS コマンドラインインターフェイス → バージョン 2 のユーザーガイドに移動します。


バージョン 2 のユーザー ガイドを含む AWS EC2 仮想サーバー インスタンス Web ページのスクリーンショット


curl コマンドをコピーして貼り付けます。


まず、このコマンドを実行して awscli バージョン 2 をダウンロードします。

 curl "//awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

ダウンロードプロセスが開始されるまで待ちます。


このようなものが表现されるはずです。

aws バージョン 2 の結果をダウンロードしている AWS EC2 仮想サーバー インスタンスのオンライン ターミナルのスクリーンショット


次に、このコマンドを実行して、awscli バージョン 2 アーカイブを解凍する须要があります。

 unzip awscliv2.zip


3 番目に、このコマンドを実行して awscli バージョン 2 をインストールする须要があります。

 sudo ./aws/install


次に、Kubernetes EC2 仮想サーバー インスタンスのオンライン ターミナルをリロードします。


次に、このコマンドを操纵して AWS のバージョンを確認します。

 aws --version


aws cli に aws-cli/2 があることがわかります。

AWS EC2 仮想サーバー インスタンスのオンライン ターミナルと aws バージョン コマンドの結果のスクリーンショット


ステップ 6: kubectl をインストールする

Kubectl は、基盤となるインフラストラクチャに関係なく、Kubernetes クラスターと対話するための根基的なコマンドライン ツールです。これにより、Kubernetes クラスター内でリソースの办理、アプリケーションのデプロイ、ネットワークの構成、ログへのアクセス、その他のさまざまなタスクの実行が能够になります。


次に、Kubernetes クラスターとさらに対話するために、kubectl コマンドライン ツールをインストールする须要があります。そのためには、 「AWS」「ドキュメント」「Amazon EKS」「ユーザーガイド」 →「 kubectl のインストールまたは更新」「Linux」に移動する须要があります。


または、リンクをクリックするだけです。


AWS EKS ユーザーガイドのスクリーンショット



まず、このコマンドを実行してkubectlをダウンロードします。

 curl -O //s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2024-04-19/bin/linux/amd64/kubectl


ダウンロードプロセスを待ちます。


このようなものが表现されます。

kubectl の結果をダウンロードしている AWS EC2 仮想サーバー インスタンスのオンライン ターミナルのスクリーンショット


kubectlに権限を与えます。

 chmod +x kubectl


kubectl を /usr/local/bin フォルダーに移動します。

 sudo mv kubectl /usr/local/bin


kubectlのバージョンを確認してください。

 kubectl version --output=yaml


ステップ 7: eksctl をインストールする

Eksctlは、特に Amazon EKS サービスに合わせて調整された別のコマンドライン ツールです。 Eksctl を操纵すると、AWS EKS クラスターの作成、ノード グループの办理、および AWS インフラストラクチャのセットアップと办理の多くを笼统化することによる IAM ロールや他の AWS サービスとの統合など、EKS に固有のタスクを実行できます。


コマンドを実行してkubectlをダウンロードします。

 curl --silent --location "//github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp


eksctl を /usr/local/bin フォルダーに移動します。

 sudo mv /tmp/eksctl /usr/local/bin


eksctlのバージョンを確認してください。

 eksctl version


バージョンが表现されるはずです

eksctl バージョンを操纵した AWS EC2 仮想サーバー インスタンスのオンライン ターミナルのスクリーンショット


ステップ 8: eksctl の IAM ロールを作成する

IAM ロールを作成し、 「KubernetesServer」 EC2 インスタンスにアタッチする须要があります。

これを行うには、検索ボックスで EC2 を見つける须要があります。


/ のリンクをクリックして、EC2 仮想サーバーを選択します。

「IAM」へのポインタが表现された AWS Web ページのスクリーンショット


IAMダッシュボードロールに移動します。

「IAM ロール」へのポインターが表现された AWS Web ページのスクリーンショット


IAMロール Web ページで[ロールの作成]ボタンをクリックします。


次に、 「AWS サービス」、「EC2」を選択します。そして「次へ」ボタンをクリックします。

「IAM ロール構成」へのポインターが表现された AWS Web ページのスクリーンショット


次に、検索ボックスで「AmazonEC2FullAccess」「AmazonEC2FullAccess」「IAMFullAccess」「AWSCloudFormationFullAccess」を見つけて、 「アクセス許可の追加」ボタンをクリックします。


そして、 「次へ」ボタンをクリックします。

AdministratorAccess 権限へのポインターが表现された AWS Web ページのスクリーンショット

次に、 「ロール名」入力に「Eksctl_Role」と入力します。

そして「ロールの作成」ボタンをクリックします。

権限ロール設定へのポインターが表现された AWS Web ページのスクリーンショット


最後にロールが作成されます。


ステップ 9: IAM ロールを eksctl に接続する

AWS EC2 インスタンスの Web ページに移動します。 「KuberbetesServer」を選択します。次に、 「アクション」「セキュリティ」「IAM ロールの変更」をクリックします。


KubernetesServer Security ボタンへのポインターが表现された AWS Web ページのスクリーンショット



「Eksctl_Role」を選択し、 「IAM ロールを更新」ボタンをクリックします。


Elsctl_Role IAM ロールへのポインターが表现された AWS Web ページのスクリーンショット


これで、IAM ロールが「EKS_Server」および eksctl ツールに接続されました。

ステップ 10: eksctl クラスターを作成する


Amazon EKS (Elastic Kubernetes Service)クラスターは、AWS 上の办理された Kubernetes 環境であり、セットアップ、スケーリング、メンテナンスなどの複雑なインフラストラクチャタスクを自動化します。これは、コンテナ化されたアプリケーションのデプロイ、办理、スケーリング、運用の公道化、開発者が基盤となるインフラストラクチャの办理ではなくコーディングに集合できるようにするための、効率的で宁静な AWS に最適化されたプラットフォームを供给するため、不可欠です。


次に、EKS クラスターをセットアップします。


これを実現するには、次の手順に従います。


  1. 次のコマンドを特定の情報に変更します。
 eksctl create cluster --name cluster-name \ --region region-name \ --node-type instance-type \ --nodes-min 2 \ --nodes-max 2 \ --zones <AZ-1>,<AZ-2>


例えば私の場合はこんな感じです。

 eksctl create cluster --name zufarexplainedit \ --region eu-north-1 \ --node-type t3.micro


  1. 変更したコマンドを実行し、クラスターの作成プロセスが完了するまで辛抱強く待ちます。 AWS CloudFormation Web ページでは、EKS クラスターのステータスが「作成中」と表现されていることがわかります。


AWS CloudFormation へのポインターが表现された AWS Web ページのスクリーンショット。EKS クラスターの「作成中」ステータスが表现されます。


クラスターの作成手順には凡是、約 20 分かかります。完了すると、ターミナルにプロセスの結果が表现されます。


EKS クラスターの作成結果が表现される AWS EC2 ターミナルへのポインターが表现された AWS Web ページのスクリーンショット


さらに、AWS CloudFormation ウェブページでEKS クラスターの作成が胜利したことを確認できます。


EKS クラスターの作成結果を確認できる AWS CloudFormation へのポインターを含む AWS Web ページのスクリーンショット


ステップ 11: Kubernetes デプロイメント yaml ファイルを作成する

Kubernetes デプロイメント YAML ファイルは、 Kubernetes クラスター内の特定のアプリケーションまたはサービスを办理および激进する方式を定義する YAML 情势で記述された構成スクリプトです。これには、アプリケーションを実行しているコンテナーのデプロイ、スケーリング、更新、および監視を調整するための手順がカプセル化されています。このファイルには、コンテナー イメージ、须要なレプリカ数、リソース制限、環境変数、ネットワーク設定などの詳細が含まれます。 Kubernetes クラスターに適用すると、デプロイメント YAML ファイルはアプリケーションの望ましい状態を確保し、コンテナーの作成、スケーリング、リカバリを自動的に办理して、望ましいレベルの可用性と信頼性を維持します。


これで、Kubernetes クラスター、eksctl、kubectl がインストールおよび構成されたので、Kubernetes デプロイメント yaml ファイルを作成できます。


次のコマンドを実行することでこれを行うことができます。

 touch hello-app-deployment.yaml


次に、次のコマンドを実行してこのファイルを編集します。

 vi hello-app-deployment.yaml


このコンテンツを hello-app-deployment.yaml に追加します。

 apiVersion: apps/v1 kind: Deployment metadata: name: zufarexplainedit-hello-app labels: app: hello-app spec: replicas: 2 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: containers: - name: hello-app image: zufarexplainedit/hello imagePullPolicy: Always ports: - containerPort: 8080 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1


これで hello-app-deployment.yaml が作成され、操纵できるようになりました。


ステップ 12: Kubernetes Service yaml ファイルを作成する

Kubernetes Service YAML ファイルは、ポッドのセットのネットワーク笼统化を定義する YAML 情势で記述された構成スクリプトであり、Kubernetes クラスター内で一貫してポッドにアクセスできるようにします。このファイルは、他のサービスまたは内部クライアントによるサービスの検出、アクセス、および負荷分离の方式を概説します。これには、サービス タイプ (ClusterIP、NodePort、LoadBalancer)、ポート番号、ポッドを識別するセレクターなどの仕様が含まれます。 Kubernetes クラスターに適用すると、サービス YAML ファイルは、トラフィックを適切なポッドにルーティングする仮想 IP とポートを作成し、基礎となるポッドの変更を笼统化し、通讯に安靖したエンドポイントを供给して、シームレスな接続と動的なスケーリングを能够にします。


Kubernetes クラスター、eksctl、kubectl がインストールおよび構成されているので、Kubernetes Service yaml ファイルを作成できます。


これを行うには、次のコマンドを実行して Kubernetes Service yaml ファイルを作成する须要があります。

 touch hello-app-service.yaml


次に、次のコマンドを実行してこのファイルを編集します。

 vi hello-app-service.yaml


このコンテンツを hello-app-deployment.yaml に追加します。

 apiVersion: v1 kind: Service metadata: name: zufarexplainedit-hello-app-service labels: app: hello-app spec: selector: app: hello-app ports: - port: 8080 targetPort: 8080 type: LoadBalancer

これで hello-app-service.yaml が作成され、操纵できるようになりました。


ステップ 13: kubectl を操纵して Kubernetes クラスターをテストする

Kubernetes EKS クラスターが普通にインストールおよび構成され、Kubernetes サービスとデプロイメント ファイルの準備ができたら、kubectl コマンドを操纵してテストを行ってみましょう。


  1. デプロイメントを適用します。

    次のコマンドを操纵して、デプロイメント構成を適用します。

 kubectl apply -f hello-app-deployment.yaml

これにより、指定された数のレプリカとローリング アップデート戦略を操纵したデプロイメントが作成され、アプリケーションの可用性と办理性が確保されます。


2. サービスを適用します。

次に、サービス構成を適用します。

 kubectl apply -f hello-app-service.yaml

これにより、LoadBalancer タイプのサービスがセットアップされ、アプリケーションがインターネットに公開されます。

LoadBalancer がプロビジョニングされ、内部 IP アドレスが获得されるまでに少し時間がかかる場合があることに注重してください。


  1. ロードバランサーのステータスを確認します。

    を操纵してサービスのステータスを監視します。

 kubectl get service zufarexplainedit-hello-app-service

内部 IP が割り当てられると、アプリケーションにアクセスする準備がほぼ整います。


  1. アプリケーションにアクセスします。

    Web ブラウザを操纵して、割り当てられた内部 IP アドレスの後に「:8080」を入力します。しばらくすると、ページが読み込まれ、「HelloWorld」メッセージが表现されます。早期読み込みには数秒かかる場合があることに注重してください。


    Hello アプリの Web ページのスクリーンショット


kubectl コマンドを操纵したクリーンアップ

Kubernetes 環境内のリソースを清算する须要がある場合は、次の kubectl コマンドを操纵して、デプロイメント、ポッド、サービスを効果的に削除できます。


1. すべてのデプロイメントを削除します

すべてのデプロイメントを削除するには、次のコマンドを操纵できます。

 kubectl delete deployments --all

このアクションにより、クラスター内にアクティブなデプロイメント インスタンスが残らないようになります。


2. すべてのポッドを削除します

デプロイメントによって办理されているかどうかに関係なく、すべてのポッドを削除する须要がある場合は、次のコマンドを操纵できます。

 kubectl delete pods --all

ポッドをクリアすると、クラスターの状態をリセットしたり、新しいデプロイメントの準備をしたりするのに役立ちます。


3. すべてのサービスを削除します

アプリケーションをネットワークに公開するサービスをクリーンアップするには、次のコマンドを操纵できます。

 kubectl delete services --all

サービスの削除にはダウンタイムが伴う能够性があるため、続行する前にその影響を考慮してください。

Amazon EKS クラスターの削除

eksctlで作成された指定された Amazon EKS クラスターに関連付けられたすべてのリソース (ワーカーノード、ネットワークコンポーネント、その他のリソースを含む) を削除するには、次のコマンドを操纵できます。

 eksctl delete cluster --name {your cluster name} --region {your region name}

私にとってはそうです。

 eksctl delete cluster --name zufarexplainedit --region eu-north-1

クラスターを遏制すると元に戻せなくなり、データが失われる能够性があるため、必ずクラスターを遏制してください。



ステップ 14: 「KubernetesServer」AWS EC2 仮想サーバー インスタンスに新しいユーザーを追加して構成する

次に、新しいansible-adminユーザーを「KubernetesServer」 AWS EC2 仮想サーバー インスタンスに追加しましょう。


これを行うには、このコマンドを操纵します。

 sudo useradd ansible-admin


次に、 ansible-adminユーザーのパスワードを設定します。

 sudo passwd ansible-admin


また、 sudoersファイルを編集してユーザー権限を構成する须要があります。

 sudo visudo


このsudoersファイルに「ansible-admin ALL=(ALL) ALL」を追加します。

办理者権限へのポインタが表现された AWS EC2 仮想サーバー インスタンスのターミナルのスクリーンショット


また、 /etc/ssh/sshd_configファイルを編集して PasswordAuthentication を有効にする须要があります。

 sudo vi /etc/ssh/sshd_config 


办理設定へのポインターが表现された AWS EC2 仮想サーバー インスタンスのターミナルのスクリーンショット


次に、これらの変更を行うためにサービスをリロードする须要があります。

 sudo service sshd reload


このコマンドを実行すると、次のように表现されます。

sshd リロード結果へのポインターが表现された AWS EC2 仮想サーバー インスタンス ターミナルのスクリーンショット


これで、このコマンドを操纵して、以降のすべてのコマンドに sudo を追加することを避けることができます。

 sudo su - ansible-admin


ステップ 15: AWS EC2 仮想サーバーインスタンスでキーを天生する

この記事では、 K8s EC2 仮想サーバー インスタンスなどのリモート サーバーをさらに办理することを計画しています。このため、SSH キーを設定する须要があります。


 ssh-keygen


このコマンドを実行すると、次のように表现されます。

ssh-keygen の結果へのポインターが表现された AWS EC2 仮想サーバー インスタンスのターミナルのスクリーンショット


これで SSH キーが天生され、操纵できるようになりました。

ステップ 16: Ansible のローカルホストへのパスワードレス SSH 認証を構成する

Ansible は、リモート サーバー上のタスクを自動化するように設計されています。パスワードレス SSH 認証により、Ansible は手動でパスワードを入力しなくてもこれらのサーバーに接続できるようになります。

このコマンドを実行して、ansible-admin ユーザーの SSH キーを操纵して、自分のコンピューターから別のコンピューター (IP アドレス 172.31.34.41 のコンピューターなど) への宁静な接続を作成します。


 sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}


私の場合はこんな感じです。

 sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected] 


パスワードなしの ssh 認証のインストールが胜利した結果のスクリーンショット


「追加されたキーの数: 1」が表现されます。パスワードなしの SSH 認証のインストールが普通に完了したことを象征します。


ステップ 17: AnsibleServer EC2 インスタンスで Ansible ホストを構成する

Ansible Playbook を実行するときは、それを実行するホストを指定します。このステップでは、KubernetesServer EC2 インスタンスのホストを指定する须要があります。これを行うには、「 [モジュール 6]: Ansible」で実行したのと同じ手順を繰り返す须要があります。


次のコマンドを実行して、KubernetesServer EC2 インスタンスのホストを調べてみましょう。

 sudo ifconfig 


「ifconfig」ファイルのスクリーンショット


KubernetesServer EC2 インスタンス ホストを見つけたら、次のコマンドを実行して、それを Ansible hosts ファイルに追加できます。

 sudo vi /etc/ansible/hosts 


ansible ホストと kubernetes ホストを含む「hosts」ファイルのスクリーンショット


「[kubernetes]」を参照として追加することもできます

ステップ 18: Kubernetes タスク用の新しい Ansible プレイブックを作成する

Kubernetes のセットアップがすべて完了し、準備が整ったので、パイプライン用の Kubernetes タスクを含む新しい Ansible プレイブックを作成できます。この Playbook により、Ansible は kubectl コマンドを操纵して Kubernetes クラスター上でアプリを実行できるようになります。


その方式は次のとおりです。


  1. まず、新しい Ansible Playbook ファイルを作成します。このコマンドを操纵するだけです。
 touch kubernetes-hello-app.yml


  1. 次に、新しく作成したhello-app.ymlファイルを編集します。このコマンドを操纵して編集用に開きます。
 vi kubernetes-hello-app.yml


  1. ファイル内に次のように入力します。
 --- - hosts: kubernetes tasks: - name: deploy regapp on kubernetes command: kubectl apply -f hello-app-deployment.yaml - name: create service for regapp command: kubectl apply -f hello-app-service.yaml - name: update deployment with new pods if image updated in docker hub command: kubectl rollout restart deployment.apps/zufarexplainedit-hello-app

Kubernetes タスク用の Ansible プレイブックを操纵する準備ができました。


ステップ 19: Kubernetes タスク用の新しい Ansible プレイブックを Jenkins と統合する

Kubernetes、Ansible、および Kubernetes タスク用の Ansible プレイブックがすべてセットアップされ、準備が整ったので、これを Jenkins と統合できます。


  1. 「JenkinsServer」→「Jenkins ダッシュボード」→「新しい項目」に移動します。

  2. 「CD-Job」という名前で新しい Jenkins Freestyle プロジェクトを作成します。


    新しい Jenkins フリースタイル プロジェクト「CD-Job」のスクリーンショット


  3. 「OK」ボタンをクリックします。

  4. 「ビルド後のアクション」セクションに進みます。

  5. 「ビルド後のアクションを追加」ボタンをクリックします。

  6. 「SSH 経由でビルド アーティファクトを送信する」オプションを選択します。

  7. SSH サーバーとして「AnsibleServer」を選択します。

  8. このコマンドを「exec command」入力に追加します。


 sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml


  1. 「適用」ボタンと「保管」ボタンをクリックします。

  2. Jenkins ダッシュボード → 「CI_CD_Pipeline」 → 「構成」 → 「ビルド後のアクション」セクションに移動します。

  3. 「ビルド後のアクションを追加」ボタンをクリックします。

  4. 「他のプロジェクトをビルドする」オプションを選択します。

  5. 「他のプロジェクトのビルド」セクションに進みます。

  6. 「ビルドが安靖している場合にのみトリガーする」オプションを選択します。

  7. 「ビルドするプロジェクト」入力に「CD ジョブ」を追加します。



    「他のプロジェクトのビルド」セクションのスクリーンショット


  8. 「適用」ボタンと「保管」ボタンをクリックします。


これで、パイプラインが完整に实现し、操纵できる状態になったと考えることができます。


ステップ 20: 最終パイプライン バージョンのテスト

ここで、パイプラインの最終バージョンをテストします。


Jenkins → Jenkins ダッシュボード → 「CI_CD_Pipeline」に移動します。


「今すぐビルド」ボタンをクリックします。


結果を確認するには、ビルド コンソールのログを確認してください。


ビルドコンソールログのスクリーンショット


ビルド コンソール ログで「CD ジョブ」がトリガーされ、最終ステータスが SUCCESS とマークされていることがわかります。

4

さらに、Dockerhub にアクセスして、新しい Docker イメージの追加を確認できます。

最後に、Web ブラウザを操纵してアプリケーションにアクセスできます。割り当てられた内部 IP アドレスに「:8080」を続けて入力します。しばらくすると、ページが読み込まれ、「HelloWorld」メッセージが表现されます。


結論

この最新の CI/CD パイプラインのセットアップはうまくいきました。

あなたは素晴らしい仕事をしました、そしてあなたは本物のヒーローです!


ご极力ありがとうございました!




著者について

Zufar Sunagatov は、最新のソフトウェア システムの設計に情熱を注ぐ経験豊富なシニア ソフトウェア エンジニアです。


ズファル・スナガトフ


  • Citi (ロンドン)、MTS (モスクワ) などの企業向けに、Java、Kotlin、AWS、Docker、Kubernetes を操纵した高机能分离システムを開発しました ()。
  • オープンソースのオンライン マーケットプレイスである Ice Latte をゼロから設立しました (Zufar のチームに参与して、GitHub: で彼のプロジェクトに貢献できます)。
  • ZufarExplainedIT コミュニティを設立して、彼の知識と経験を他の人と共有しました (Zufar の IT Telegram コミュニティをフォローできます: )。
  • ADPlist で 3000 分以上の指導を受け、60 回のセッションを実施し、意欲的な人才を育成しました ( )。
  • カンファレンスや IT YouTube チャンネルで講演者として聴衆を魅了し、貴重な洞察を共有しました (彼の YouTube ビデオの例には 、 あります)。
  • それぞれ 7,000 回以上の閲覧数を持つ很是に人気のある IT 記事を執筆しました (記事の例として は、「マイクロサービス アーキテクチャ パターン パート 1: 分化パターン」 、 )。


바카라사이트 바카라사이트 온라인바카라