はじめに
Kubernetesは、大規模なアプリケーションをデプロイするための標準となっています。これにより、開発者は大きなメリットを得ることができ、従来のサーバーホスティングでは利用できない機能が提供されます。Kubernetesは、インフラストラクチャの煩わしさなしに水平スケーリングを可能にします。さらに、アプリケーションの成長に伴うインフラストラクチャの取得および維持コストを削減します。
しかし、Kubernetes上でのアプリケーションの管理は複雑になる場合があり、高度なスキルが要求されます。Kubernetesと継続的インテグレーションおよび継続的デプロイメントプロセス(CI/CD)を使用してアプリケーションをデプロイすることは、抽象化を提供することで、この複雑なプロセスを克服するのに役立ちます。GitOpsは、抽象化を実現するのに役立つツールの1つです。
このチュートリアルでは、Argo CDを使用してKubernetes上でアプリケーションを継続的にインテグレーションおよびデプロイする方法を実演します。リポジトリに変更がプッシュされると、いつでもターゲットクラスターにデプロイされます。Argo CDは、ソフトウェア開発ライフサイクル全体と統合することで、バージョン管理、設定、およびアプリケーション環境も提供します。以下のようなKubernetes用のパッケージマネージャーを使用している場合、Helm、またはリポジトリがBitBucketやGitLabでホストされている場合、Argo CDはこれらすべてのプラットフォームともシームレスに統合できます。
前提条件
このチュートリアルを完了するには、以下が必要です。
-
マシン上のSSHキー。Linux/MacOS/BSDで動作するSSHキーのペアをお持ちでない場合は、次のチュートリアルに従って作成できます。SSHの概要 – SSHサーバー、クライアント、およびキー.
-
また、稼働中のKubernetesクラスターも必要です。さらに、マシン上でkubectlが動作している必要があります。Kubernetesクラスターをお持ちでない場合は、次の手順に従ってください。Ubuntu 18.04でKubeadmを使用してKubernetesクラスターを作成する方法.
-
Kubernetesの概念についての基本的な理解が必要です。Kubernetesについてさらに詳しく知りたい場合は、次の手順に従ってください。Kubernetesツールの基本を知る.
ステップ1 – Argo CDのインストール
Argo CDをインストールする前に、 kubectlが動作するKubernetes環境が必要です。これは、以下のコマンドを実行してテストできます。
|
1 |
kubectl get nodes |

少なくとも1つのKubernetesノードが Readyステータスで稼働しているはずです。利用可能なノードがない場合は、Kubernetesのインストールを再確認する必要があります。次に、Kubernetesインストール用に別のネームスペースを作成します。これを argocdと呼びましょう。このネームスペースにArgo CD関連のサービスを保持します。
|
1 |
kubectl create namespace argocd |
その後、以下のコマンドを実行して、上記で新しく作成したネームスペースにArgo CDスクリプトをインストールします。
|
1 |
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml |

Kubernetesポッドのステータスを確認するには、以下のコマンドを実行します。
|
1 |
watch kubectl get pods -n argocd |
以下のような結果が表示されます。

これで、Argo CDのインストールが正常に完了しました。 watchインターフェースを終了するには、 Ctrl + Cを押します。このKubernetesクラスター内のサービスにアクセスするには、ポートをフォワードする必要があります。次のステップでその方法を説明します。
ステップ2 – Argo CDにアクセスするためのポートフォワード
Kubernetesは、アプリケーションを任意のポートにデプロイできます。そのため、ローカルマシンからアクセスするには、Kubernetesアプリケーションのポートをフォワードする必要があります。Argo CDは、 argocd-server(ポート443を使用)。ポート443はHTTPSおよびHTTPサービスのデフォルトポートです。Kubernetesポートを任意のポートにフォワードできます。以下の例では、ポートを 8080にフォワードしています。ポートをフォワードするには、ターミナルで以下のコマンドを実行します:
|
1 |
kubectl port-forward svc/argocd-server -n argocd 8080:443 |
ポートをフォワードすると、そのポートはブロックされ、他のサービスがアクセスできなくなります。アクセスが中断されないようにするため、上記のコマンドは常に新しいターミナルで実行することをお勧めします。完了したら、次のキーを押すことができます。 Ctrl+C を押して、ポートフォワードプロセスを終了します。
ポートをフォワードした後、次のURLにアクセスしてArgo CDに移動できます。 localhost:8080。資格情報の入力を求められます。資格情報は次のステップでコマンドラインから取得できます。
ステップ 3 – コマンドラインからArgo CDを管理する
Argo CDのインストールを管理するために、Argo CDコマンドラインをインストールする必要があります。Argo CDをインストールする推奨方法は、次のようなパッケージマネージャーを使用することです。Homebrew。Homebrewは、macOSおよびLinuxにインストールするための一般的なパッケージマネージャーツールです。以下のコマンドを使用してHomebrewをインストールできます。
|
1 |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
マシンに brew がインストールされている必要があります。ログイン用のパスワード入力を求められる場合があります。以下のコマンドを実行して実行できます。
|
1 |
brew install argocd |
上記のインストール後に、 argocd コマンドが使用可能になります。管理者パスワードを取得するには、次の kubectl コマンドを使用する必要があります。これはインストール中に自動的に生成されました。取得するためのコマンドは以下の通りです。
|
1 |
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo |
Argo CDがインストールされたので、以下の argocd login コマンドを使用してログインできます。
|
1 |
argocd login localhost:8080 |
コマンドラインを使用する場合、アプリケーションをデプロイするためにログインする必要があります。

セキュリティ警告が表示される場合があります。その場合は、 y を押して進めてください。ログイン後にパスワードを変更したいユーザーも多いでしょう。その場合は、以下の argocd account update-password コマンドを実行してパスワードを変更します。これで、完全に機能するArgo CDの設定が完了しました。
最後に、インストールしたArgo CDを使用して、Kubernetesクラスターにアプリケーションをデプロイします。
ステップ 4 – 複数のクラスターを利用する
アプリケーションのセットアップを続ける前に、デプロイ先となるターゲットマシンを把握しておく必要があります。多くのシナリオでは、Argo CDとデプロイされたアプリケーションは同じクラスター上で実行できます。これはArgo CDのデフォルトの動作ですが、制限ではありません。他のターゲットマシンにアプリケーションをデプロイしたい場合は、まずマシンで以下の kubectl config を実行します。
|
1 |
kubectl config get-contexts -o name |
たとえば、次の2つのクラスターを取得したとします。 test-deploy-cluster および test-target-cluster。ここで、 test-deploy-cluster にArgo CDがあり、 test-target-cluster にデプロイしたい場合は、以下のコマンドを実行します。
|
1 |
argocd cluster add target-k8s |
上記のコマンドにより、Argo CDに別のクラスターの詳細が追加されます。また、Argo CDのターゲットクラスターにサービスをデプロイできるようになります。
ステップ 5 – サンプルアプリケーションをデプロイする
いよいよKubernetesクラスターにアプリケーションをデプロイします。Argo CDが提供するサンプルアプリケーションを使用します。また、 helm-guestbook (Helm チャートを使用して構築されたもの)も利用します。
アプリケーションをインストールするには、以下の argo app create コマンドを使用します。また、Gitリポジトリ, helm-guestbook を指定し、デフォルトの送信先とネームスペースを渡します。
|
1 |
argocd app create helm-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-server https://kubernetes.default.svc --dest-namespace default |
新しく作成されたアプリのステータスは、以下の argocd app get:
|
1 |
argocd app get helm-guestbook |
もし OutOfSync ステータスが表示されても驚かないでください。これまでにHelmチャートをダウンロードし、Argo CD用のエントリポイントを作成しました。しかし、Kubernetes側では、リソースが割り当てられていません。このアプリケーションを 同期するには、以下のコマンドを実行します:
|
1 |
argocd app sync helm-guestbook |

GitOpsを使用する場合、アプリケーションを常にアップストリームと同期させる必要があります。そのため、リポジトリに変更が発生するたびに、Argo CDがアプリケーションをデプロイします。
Argo CDコマンドラインを使用してアプリケーションをデプロイしました。Argo CDのWebインターフェースを使用しても同じ結果を得ることができます。Webインターフェースは、アプリケーションのステータスや実行状態を確認したい場合に非常に役立ちます。Webインターフェースを開くには、ブラウザで localhost:8080:

インストールを確認するために、ブラウザでアプリケーションを開きます。私たちの helm-guestbookはポート 80で動作します。ポート 80を使用している他のアプリケーションがある場合は、他のアプリケーションが中断されないようにポートをフォワードできます:
|
1 |
kubectl port-forward svc/helm-guestbook 9090:80 |
最後に、WebブラウザでURL localhost:9090を開き、アプリケーションが動作していることを確認します:

これで、開発者がGitHubのリモートリポジトリにコードをプッシュすると、ArgoCDがそれを検知して反映します。ArgoCDのデプロイメントはそれに応じて更新され、継続的な可用性が提供されます。
まとめ
このチュートリアルでは、Argo CDを使用してKubernetes上にアプリケーションをインストールおよびデプロイする方法を紹介しました。Kubernetes上でのデプロイがメンテナンス可能であることを確認することは重要です。この点において、GitOpsは非常に役立ちます。
Kubernetesは現在、クラウドにおけるデプロイの標準となっています。CloudSigmaには、いくつかの優れたKubernetesに関するチュートリアルがあります。次にこれらを確認してみてください:
- Kubernetes DNSサービス:初心者向けガイド
- Helmを使用してKubernetes上にMySQLを搭載したWordPressをセットアップする
- KubernetesへのJenkinsのインストール
- CloudSigma PaaSの探索:パブリックIP経由でKubernetesアプリケーションにアクセスする方法
Happy Computing!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。