Kubernetesはいわゆるコンテナオーケストレーターですが、素で使うことはほとんどなく様々なOSSやツールと組み合わせて運用されることが多いです。 私もHelmチャートを使って様々なコントローラーを導入しています。KEDAで水平スケールを管理し、ArgoCDを使ってGitOps運用したり、HeadlampやDatadogでモニタリングしたりです。
多くのツールとクラウドを組み合わせ、連携してようやく本格的なKubernetes運用ができます。これは、Kubernetesの難しさを象徴する一面と言えるでしょう。普段運用していると気づきにくいですが、ふと振り返ったり、誰かに説明したり、オンボーディングをサポートするときに本当に難しいと感じます。そもそもKubernetesを運用するには多くの知識1が必要です。この状況はKubernetesが登場して以来、複雑になる一方で、初心者がKubernetesを使い始めるのは常にハードル高い状態です。
そんなKubernetesの運用に必要な機能をオールインワンで提供するプラットフォームがいくつか登場しています。Devtronもその1つです。今回は、Devtronがどう解決しようとしているのか触ったメモです。
- Devtronの目指すところ
- Devtronのインストール
- Devtron権限管理
- DevtronのUI
- Devtron Stack Managerでコンポーネントを追加
- Devtronの難しさ
- 個人的な期待
- まとめ
- 参考
Devtronの目指すところ
Devtronの公式ページを見ると、DevtronはKubernetesのアプリケーションとインフラ管理を統合しAIアシスタントが運用を簡素化し、デリバリーを加速することを目的としています。
Devtron is purpose-built for production Kubernetes teams, unifying app and infrastructure management with an AI teammate that simplifies operations and speeds delivery.

DevtronはKubernetesの上に様々な機能を提供しており、アプリケーションのデプロイから監視、セキュリティまで幅広くカバーしています。具体的には、複数のOSSを組み合わせています。代表的な機能は以下の通りです。
- CI/CD統合 = ビルドをDevtronが制御、そのビルド結果をDevtronが制御するArgoCD/Fluxでデプロイ、デプロイ履歴やデプロイ問題をAIが検知、自動ロールバック
- セキュリティ統合 = イメージやマニフェストのスキャン、シークレットがコードやコンフィグに露出していないかチェック、シップ前にライセンススキャン
- Observability = PrometheusやGrafanaをDevtron UIに組み込んで監視を一か所から提供
- コスト管理 = コストを環境単位でモニタリング、AIによるサイジングや異常検出
これらをDevtronから提供するだけでなくUIも一元化することで、Kubernetesの運用を簡素化しようとしています。
Devtronのインストール
DevtronはHelmチャートを使って導入します。AWS EKS上に導入する場合を例に説明します。前提条件は次の通りです。
- EKSクラスターが作成済み(この記事ではEKS Automodeを使用)
- kubectl、helmコマンドがインストール済み
- クラスターへの接続が確立済み
まずはHelmリポジトリを追加します。
$ helm repo add devtron https://helm.devtron.ai $ helm repo update
Devtronは内部で利用しているpostgresql podでストレージが必要です。EKS AutomodeならEBS CSIドライバーがデフォルトで組み込まれているので、スムーズに進められます。
$ cat << EOF > storageclass.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: auto-ebs-sc annotations: storageclass.kubernetes.io/is-default-class: "true" allowedTopologies: - matchLabelExpressions: - key: eks.amazonaws.com/compute-type values: - auto provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true" EOF $ kubectl apply -f ./storageclass.yaml
準備ができたら、Devtronをインストールします。少し初期設定から変更したい点をvalues.yamlで定義します。cicdモジュールを入れます2。初期状態はDevtron ServiceをLoadBalancerとして作成するので、ClusterIPに変更してport-forwardでアクセスします。検証ではなくユーザー認証を利用して展開するなら、ingress.enabled: trueでALBを作成すると良いでしょう。
$ cat << EOF > devtron-values.yaml gateway: storageClass: "auto-ebs-sc" installer modules: - cicd components: devtron: service: type: ClusterIP EOF $ helm upgrade --install devtron devtron/devtron-operator --version 0.22.98 -n devtroncd --create-namespace -f devtron-values.yaml
インストールすると徐々にPodが起動してきます。Podの依存関係や起動タイミングの問題でスムーズには起動しません。何度かPodステータスがErrorやCrashLoopBackOffになりますが、10-15分ほど待つと最終的に安定します。 cicdモジュールを入れた場合、以下のようなpodが起動します。
$ kubectl get po -A NAME READY STATUS RESTARTS AGE app-sync-job-vykie-hj7xv 1/1 Running 0 4m56s argocd-dex-server-56b6556c7f-r9xw2 1/1 Running 0 4m57s dashboard-784b5bbcfb-b8k7d 1/1 Running 0 4m57s devtron-584d7b6797-nn6kd 1/1 Running 2 (118s ago) 2m devtron-nats-0 3/3 Running 0 4m56s devtron-nats-test-request-reply 0/1 Completed 0 4m57s Git-sensor-0 1/1 Running 4 (2m29s ago) 4m56s inception-7b69fb787c-2qj8z 1/1 Running 0 4m57s kubelink-f8d5bf985-579gj 1/1 Running 2 (118s ago) 2m kubewatch-5c6fd4d4b5-8rlt4 1/1 Running 4 (2m2s ago) 4m57s lens-55cdc47f9b-7lmqz 1/1 Running 4 (2m41s ago) 4m57s postgresql-migrate-casbin-0b0tv-wldnl 0/1 Completed 0 4m56s postgresql-migrate-devtron-qqdbt-28hh4 0/1 Completed 2 4m56s postgresql-migrate-gitsensor-g52lv-pk6gs 0/1 Completed 3 4m56s postgresql-migrate-lens-rmqgj-skppn 0/1 Completed 3 4m56s postgresql-postgresql-0 2/2 Running 0 4m56s
Devtron権限管理
Devtronを触り始めるにあたり、port-forwardによるアクセスではOIDC認証ができないことを前回の記事で紹介しました。このため、port-forwardでアクセスした場合、デフォルトのadminユーザーで操作することになります。いったん操作を試すならこれでも大丈夫です。adminユーザーの初期パスワードは、以下のコマンドで取得できます。3
kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d

ちなみにOIDC認証含むSSOを利用する場合、権限を定義してグループやユーザーに紐づけることで操作対象を制約できます。

DevtronのUI
サイドバーから様々な機能にアクセスできます。

Applicationがメイン操作です。アプリケーションを定義して、そこにビルド、デプロイを行います。Devtronで定義したアプリケーション以外に、helmで導入したコントローラーはHelm Appsとして表示されたり、ArgoCDで管理しているアプリケーションはArgoCD Appsとして表示されます。

Resource Browserは、いわゆる簡易Kubernetesダッシュボードです。Kubernetesに展開されているリソースを確認したり、YAML操作できます。
Chart Storeは、Helmチャートを選択してインストールことができます。Artifact Hubが初期状態で登録されているので、そこからチャートを選択してインストールできます。

Global Configurationは、Devtron全体の設定を調整します。例えば、クラスター登録、チャートリポジトリ登録、Gitリポジトリの登録や、イメージ/OCIレジストリの登録、ユーザーや認証回りの設定です。クラスターを追加してマルチクラスターができるのはいいですね。


Devtron Stack Managerは、Devtronが内部で利用するコンポーネントの選択です。ArgoCDやTrivyなど、Devtronが利用するOSSコンポーネントを選択してインストールできます。


Devtron Stack Managerでコンポーネントを追加
導入したら手始めに操作するのが、Devtron Stack Managerです。たとえばMonitoring (Grafana)を選択するとGrafana一式がインストールされます。

他にもArgoCDやTrivyなど、様々なコンポーネントを追加できます。例えばargocdを追加すると次のようなpodが起動します。
$ kubectl get po -A NAMESPACE NAME READY STATUS RESTARTS AGE argo workflow-controller-7fbdc9c877-4l8h4 1/1 Running 0 17m devtroncd argocd-application-controller-0 1/1 Running 0 9m10s devtroncd argocd-dex-server-56b6556c7f-r9xw2 1/1 Running 0 17m devtroncd argocd-Redis-86b6b9888b-5lmwg 1/1 Running 0 9m10s devtroncd argocd-repo-server-78fcb8745b-9mwvk 1/1 Running 0 9m10s devtroncd argocd-server-8474776d6-ssrlq 1/1 Running 0 9m10s devtroncd dashboard-784b5bbcfb-b8k7d 1/1 Running 0 17m devtroncd devtron-9f55ffd8f-4nkc9 1/1 Running 0 9m4s devtroncd devtron-nats-0 3/3 Running 0 17m devtroncd devtron-nats-test-request-reply 0/1 Completed 0 17m devtroncd Git-sensor-0 1/1 Running 4 (14m ago) 17m devtroncd inception-7b69fb787c-2qj8z 1/1 Running 0 17m devtroncd kubelink-545b8f465c-hw46g 1/1 Running 0 9m4s devtroncd kubewatch-5c6fd4d4b5-8rlt4 1/1 Running 4 (14m ago) 17m devtroncd lens-55cdc47f9b-7lmqz 1/1 Running 4 (14m ago) 17m devtroncd postgresql-migrate-casbin-3ef7n-d56rd 0/1 Completed 0 9m10s devtroncd postgresql-migrate-devtron-wcxwp-dhpsb 0/1 Completed 0 9m10s devtroncd postgresql-migrate-gitsensor-wgxiq-8cxsf 0/1 Completed 0 9m10s devtroncd postgresql-migrate-lens-cdgiz-vk452 0/1 Completed 0 9m10s devtroncd postgresql-postgresql-0 2/2 Running 0 17m
さらにtrivyを追加すると、次のようなpodが起動します。
$ k get po -A NAMESPACE NAME READY STATUS RESTARTS AGE argo workflow-controller-7fbdc9c877-4l8h4 1/1 Running 0 39m devtroncd argocd-application-controller-0 1/1 Running 0 31m devtroncd argocd-dex-server-56b6556c7f-r9xw2 1/1 Running 0 39m devtroncd argocd-Redis-86b6b9888b-5lmwg 1/1 Running 0 31m devtroncd argocd-repo-server-78fcb8745b-9mwvk 1/1 Running 0 31m devtroncd argocd-server-8474776d6-ssrlq 1/1 Running 0 31m devtroncd dashboard-784b5bbcfb-b8k7d 1/1 Running 0 39m devtroncd devtron-7688fbc8d8-ck7qx 1/1 Running 0 15m devtroncd devtron-nats-0 3/3 Running 0 39m devtroncd devtron-nats-test-request-reply 0/1 Completed 0 39m devtroncd Git-sensor-0 1/1 Running 4 (37m ago) 39m devtroncd image-scanner-6b5b5b976c-qgfvx 1/1 Running 0 15m devtroncd inception-7b69fb787c-2qj8z 1/1 Running 0 39m devtroncd kubelink-668c7ccb7d-qhm6j 1/1 Running 0 15m devtroncd kubewatch-5c6fd4d4b5-8rlt4 1/1 Running 4 (36m ago) 39m devtroncd lens-55cdc47f9b-7lmqz 1/1 Running 4 (37m ago) 39m devtroncd postgresql-migrate-casbin-sspac-zk9×8 0/1 Completed 0 15m devtroncd postgresql-migrate-devtron-idjwh-grfwr 0/1 Completed 0 15m devtroncd postgresql-migrate-gitsensor-glbv3-8qflx 0/1 Completed 0 15m devtroncd postgresql-migrate-lens-jwyyd-b4hzg 0/1 Completed 0 15m devtroncd postgresql-postgresql-0 2/2 Running 0 39m
Devtronの難しさ
Devtronを触っていてなかなか難しいと感じる部分があります。まず、Devtronは3つのワークロードが考えられます。
- CI/CDワークロード = Devtronが提供するCI/CD機能を使ってビルド、デプロイを行う
- ArgoCD/Fluxワークロード = ArgoCDアプリケーションをデプロイしてDevtronから管理
- Helmワークロード = HelmチャートをDevtronからインストールして管理
Devtronの理想的には、CI/CDからDevtron (つまりKubernetes)で行うワークロードに見えます。コンセプトの目指すところはめちゃめちゃ高いですが、現時点では難易度が高めです。
Devtron内部でCI/CDを組む
例えばEKSにおけるGitOpsは、CIでビルドしてコンテナイメージをECRに配置、これを参照するKubernetes定義をシングルソースとしてGitHubなどに配置、CDとしてArgoCD/FluxでKubernetesにデプロイ、というシナリオが一般的です。Devtronはこれをさらに一歩進めて、CIもDevtronで行うことを想定しています。つまりDevtronでGit Cloneしてコンテナビルド -> レジストリに登録 -> これをさらにArgoCDなどで展開というシナリオです。GitOpsだけじゃなくて、CI/CDがセットになるのが特徴と言えます。Dockerfileでのビルド以外にDockerファイルなしのシナリオもDevtronにありますが、それはJava/Go/Python/Nodeなどで.NETはありません。まぁそんなものです、知ってた。
EKS的に難しいのが、DevtronからECRへのPushが必須なところです。DevtronのECRレジストリ登録UIを見ると、AWS認証はEC2 Instance ProfileかAccessKey/AccesSecretしか想定になさそうです。AWS EKSは最低限IRSA、可能ならIAM Pod Identityで認証をとるのが一般的です。特にEKS AutomodeはIMDSv2のホップ調整ができないため、EC2 Instance Profileから認証をとってくる設計は難しいです。EKSでDevtronを使うなら自前KarpenterなどのManaged Nodeである必要があります。
AWSを例に挙げましたが、認証系を各クラウド事情に沿ってアップデートしていくためにはDevtron開発者自身の理解が必要でしょう。AIの補助があっても開発リソースには負担となりそうですね。がんばってほしい。
ユーザー管理
DevtronのUser管理はSSOが前提になっています。これも運用上の難しさがあります。
前の記事で書いた通り、DexのOIDC認証をサブパスで隠すためグローバルな単一エンドポイントが必須です。この設計は、Devtronから自身が内包するDexへのアクセスにこのグローバル単一エンドポイントを使うため、エンドポイントのIP制限にDevtron Podが起動しているEC2のIP許可という制約が伴います。NAT GW配下ならNAT GWで良いのですが、そうじゃないなら次々と入れ替わるノードのIPを許可しないといけません。Devtronを触るなら、まずはこのあたりの設計を考える必要があります。これ、OIDC認証としては通常考えなくていい制約なので、DevtronのOIDC設計はちょっと好みではないです。
ダッシュボード
Kubernetesダッシュボードとしては貧弱と言わざるを得ません。 ここから情報を読み取ろうにも読み取れる情報少なすぎるので、今のダッシュボードだと運用的には微妙です。 AIインテグレート用のコマンドパネルはあるので、そういうところはよさそうなのと、Grafana連携もできるのでダッシュボード埋め込みとか来ると良さそうです。
使うリソースが多い
Pod一覧を見てもわかりますが、Devtronは多くのPodを起動します。運用するということは、これらのPodが安定して動作するために必要なリソースを確保しなくてはいけません。 特に小規模なクラスターでは、Devtron自体がリソースを消費しすぎてノードのコストがバカにならないでしょう。 Kubernetes運用してていつも悩むんですが、運用系のコントローラーってPodが増えやすいので、もう少しPod数自体押さえたいんですよね。1コントローラー1Podだとすごいんですが、なんだかんだで冗長化で2Podが最低限必要ですし。
内包するOSSの最新事情のキャッチアップ
利用者もですが、Devtron開発自体が内包するOSSの最新事情をキャッチアップし続けるのは大変そうです。 例えばArgoCDやFlux、Trivy、Prometheus、Grafanaなど、これらのOSSは頻繁にアップデートされます。Devtronがこれらの最新バージョンをサポートし続けるためには、Devtron自体も頻繁にアップデートされる必要があります。Devtronのリリースサイクルと内包するOSSのリリースサイクルをうまく調整するのは難しい課題です。
各OSSの最新機能を活用したいと考えても、Devtron的にはそれをいい感じに解釈して提供する必要があるでしょう。この辺りはバランスをとるのか、あるいはOSSを直接使うのかっていう感じになります。 でも各種OSSを直接使いだすならDevtronを使う意味が薄れるんですよね。
AIインテグレーションが遠い
ぱっと使い始めようとしてもAIインテグレーションはどこ。とすぐにはわからないです。UXの問題にも感じますが、AIインテグレーションでどのような体験を提供したいのかというチュートリアルがないので難しいですね。 AIをぱっと使いたいっていうとき、まずログインしたらAI画面が開けばいいのにまである。
headlampやkubectl AIとか使っていると割と直感的なこともあり、今後どうしていくのか気になります。
個人的な期待
CI/CDの内、CIを切り離してほしい感じがします。CIはGitHub Actionsなり自身でやるシナリオはやはり主体的で、そこがセットな体験になっているのは相当厳しい。ECR含めて準備も多く、ちょっと試してみるまでがまず遠いです。 やりたいのは、AIドリブンなCDや運用であって、CIやCDセットアップじゃないんですよね。
個人的に、運用していてほしいのは、AI +ArgoCD + KEDA + Headlamp + Grafana + Fluentbit + Security Scanっていう感じがあります。DevtronはCI外せばそこに近い感じもするので今後も注目していきたいです。
まとめ
Devtron面白いのですが、まだまだ難しいなと感じました。Kubernetes運用の複雑さを解決するために多くの機能を提供していますが、その分設定や運用も複雑になりがちです。 有料版を含めて、どこまでサポートされるのかも気になるところです。