「ArgoCD」を使ってKubernetesでDevOps

【連載】

Kubernetes入門

【第17回】「ArgoCD」を使ってKubernetesでDevOps

[2020/10/01 09:00]正野 勇嗣 ブックマーク ブックマーク

「ArgoCD」はKubernetes環境を前提としたCD(Continuous Delivery)ツールです。GitOpsパターンに準拠しており、Gitでの変更に追従して環境にデリバリーすることができます。GitOpsを理解するためには、Single Source of Truthの考え方を理解することが有効です。Single Source of Truthでは、アプリケーションとシステム基盤を全て単一の構成管理ツールにおいて管理します。

通常、アプリケーションはGitなどの構成管理ツールで管理されますが、基盤環境まで含めて全て同一の箇所で管理されることは少なかったのではないでしょうか。Argo CDを使うことで、GitOpsおよびSingle Source of Truthを容易に実現できるようになります。

GitOpsとArgoCDの位置付け

GitOpsとArgoCDの位置付け

ArgoCDのインストール

ArgoCD用のネームスペースを作成し、「kubectl apply」でKubernetesのArgoCD環境を構築します。

$kubectl create namespace argocd
namespace/argocd created
$kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
serviceaccount/argocd-application-controller created
serviceaccount/argocd-dex-server created
serviceaccount/argocd-server created
role.rbac.authorization.k8s.io/argocd-application-controller created
role.rbac.authorization.k8s.io/argocd-dex-server created
role.rbac.authorization.k8s.io/argocd-server created
clusterrole.rbac.authorization.k8s.io/argocd-application-controller created
clusterrole.rbac.authorization.k8s.io/argocd-server created
rolebinding.rbac.authorization.k8s.io/argocd-application-controller created
rolebinding.rbac.authorization.k8s.io/argocd-dex-server created
rolebinding.rbac.authorization.k8s.io/argocd-server created
clusterrolebinding.rbac.authorization.k8s.io/argocd-application-controller created
clusterrolebinding.rbac.authorization.k8s.io/argocd-server created
configmap/argocd-cm created
configmap/argocd-rbac-cm created
secret/argocd-secret created
service/argocd-dex-server created
service/argocd-metrics created
service/argocd-redis created
service/argocd-repo-server created
service/argocd-server-metrics created
service/argocd-server created
deployment.apps/argocd-application-controller created
deployment.apps/argocd-dex-server created
deployment.apps/argocd-redis created
deployment.apps/argocd-repo-server created
deployment.apps/argocd-server created

サンプルアプリケーションのデプロイ

ポートフォワードでアクセスするため、以下のコマンドを実行します。

$kubectl port-forward svc/argocd-server -n argocd 8080:443
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080

ブラウザからlocalhostにアクセスすると、以下の画面が開かれます。ユーザー名「admin」とパスワードを入力してログインしてください。

localhostにアクセス

なお、パスワードはPodの名称です。

$kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
argocd-server-55b77c6bf5-kbdqd

続いて「NEW APPLICATION」ボタンをクリックします。

「NEW APPLICATION」ボタンをクリック

以下の通り入力し、「CREATE」ボタンをクリックします。

入力1 入力2

これで、アプリケーションが作成されました。次に、「argocd-example-app」をクリックします。

「argocd-example-app」をクリック

Kubernetesのリソース群が表示されるので、「Deployment」をクリックします。

「Deployment」をクリック

YAMLを表示/編集し、そのまま環境へ反映することができます。ただし、通常は直接編集するのではなく、Gitのリポジトリからチェックアウト/編集/登録します。

編集

今回は、KubernetesにおけるCDの例としてArgoCDを紹介しました。GitOpsやSingle Source of Truthは、昨今のCD系のトレンドの一つなので押さえておくとよいでしょう。

著者紹介


正野 勇嗣 (SHONO Yuji ) - NTTデータ 課長

2011年まで開発自動化技術のR&Dに従事。その後、開発プロジェクト支援やトラブルシューティング等に主戦場を移す。「ソースコード自動生成」に加えて、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、多様化する開発自動化技術動向に興味。

最近は第四の自動化であるInfrastructure as Code等の「基盤自動化」の魅力に惹かれている。開発自動化技術に関する雑誌・記事執筆も行う。3児のパパ。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
対話システムをつくろう! Python超入門
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
PowerShell Core入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る