以下、自作のnginxのマニュフェストをargoCD経由でデプロイしてみる。
githubのパスを” ./ “にする。
以下、デプロイができていることが把握できる。
以下に、argoCDでHelm経由でデプロイする方法について記載する。
手順:
1)argoCDにログインする
2)NEW APPを選択
1)以下の必要な箇所を入力する
■GENERAL
Application Name: mysql(適当なの名前)
Project: default
■SOURCE
Repository URL: https://charts.helm.sh/stable(今回は、公式のチャートを使用する)
Chart: mysqlを選択(クリックすると、導入したいミドルウェア類が表示されるので必要な物を選択するだけ)
バージョン:クリックして表示されたバージョンを選択
■DESTINATION
Cluster URL: https://kubernetes.default.svc
Namespace: defautl(導入先のNameSpaceを選択)
以下、ミドルウェア類のパラメータの修正があれば変更すること
2)Createボタンを押す。
デプロイが完了すると、以下の表示が出る。
2)ArgoCDにて、Settings > Repositoriesを選択
3)対象のレポジトリを選択して、Create Applicationを選択
4)以下を入力する
■GENERAL
Application Name : 適当な名前
Project : default
■SOURCE
Repository URL :対象のレポジトリURL
Path : old(マニュフェストが置いてあるフォルダ)
■DESTINATION
Cluster URL :デフォルトで用意れている物を選択
Name Space :デプロイ対象のNameSpaceを指定
5)Createを押す
デプロイ後の様子。
PODが作成されることを確認(Lensの画面にて)
1)Githubにて、アクセストークンを作成する。
公式(トークン作成方法)
2)argoCDにアクセスして、CONNECT REPO USING HTTPSを選択。
3)以下、入力する。
Repository URL:対象のレポジトリ
UserName :GituhubのUserName
Password :上記で、作成したトークンをコピー&ペーストする。
参照先:
https://www.yukkuriikouze.com/2020/10/26/4026/
今回、上記サンプルのレポジトリを指定
1)NEW APPを選択
2)以下、入力を行う。
Application Name : 任意
Project : default
■Source
Repository URL:
https://github.com/argoproj/argocd-example-apps.git
Path:
guestbook
■DESTINATION
cluster URL:
Namespace:
default
上記、入力が出来たら、CREATEを押す。
上記のサンプルでは成功
(Lensの画面にて)
argoCDの管理画面にて、状況確認
(デプロイ成功の様子)
実際に、アクセスしてみる。
(上記でデプロイした、ArgoCDのサンプルアプリ)
作業イメージ:
ローカル上でソースコードをGitHubにpushすると、CIrcleCIがそれをトリガーに
ECRにdockerfileをpushして、その後、ECSを更新する。
[IAM]
CircleCI用のアカウントを作成する。
以下の権限を追加する
[ECS]
①クラスター名:
circleci-orbs-clusterという名称で、クラスターの作成名にする(任意で問題ない)
サービス名:
circleci-orbs-serviceというサービス名にする。
タスク定義:
circleci-orbs-taskという定義名にする
[ECR]
今回は、circleci-orbs-sampleという名称でECRにpushする
[GitHub]
レポジトリーの中身になる。
1)ディレクトリ構成について
.circleci
|----config.yml <-------------CircleCIの設定ファイル
dockerfile <-------------------nginxのdocker file
index.html <-------------------nginxのコンテンツファイル
nginx.conf <-------------------nginxのコンフィグ類
2)config.ymlについて
以下、config.ymlに記載した①②③について説明します。
①
ジョブ、コマンド、Executor などの構成要素をまとめた共有可能なパッケージということで
要は、以前のCIrcleCIでコマンド実行に関する記述をしていたのをOrbというパッケージを利用することで
いい感じに実行してくれる物
②
region : AWSのリージョン名になる(CircleCIの環境変数に記載している)
account-url: ECRのアカウントURL名になる(CircleCIの環境変数に記載している)
例:以下の箇所がECRのアカウントURLを示す
repo: ECRのリポジトリ名を示す(CircleCIの環境変数に記載している)
tag: サンプル素材のconfig.ymlを真似しただけ。
dockerfile: dockerfileの所在をcircleci側で認識させるために記載する
path: dockerfileの所在をcircleci側で認識させるために記載する
上記を記載しないで、CIrcleCIで実行させると、Dockerの所在が分からないというエラーが出たので記載する。
③
family: ECSのタスク定義名になる(CircleCIの環境変数に記載している)
cluster-name: ECSのクラスタ名になる(CircleCIの環境変数に記載している)
service-name: ECSのサービス名になる(CircleCIの環境変数に記載している)
container-image-name-updates: サンプル素材のconfig.ymlを真似しただけ。
[CircleCI]
Project Settings > Environment Variables
上記のconfig.ymlで記載した①②③は、以下の環境変数になる。
実際に、ローカルにあるソースコードを編集などを行いgithubにpushすると
それをトリガーにCircleCI側で ECR/ECSで更新が行われる。
(成功すれば以下のような表示になる。)
CircleCIでのデプロイが完了後について:
ECRも以下のリポジトリが更新されていることが確認できる。
コードを1枚貼って、テストイベントを実行するだけで、 全台の確認結果が返ってくる手順です。 [ゴール] Nameタグが web-* / api-* / batch-* のEC2すべてに確認コマンドを流し、 NGの台だけ を結果に表示します。確認対象のuserdata(Ubu...