コンテンツにスキップ

クラウドネイティブ概要

KanjiIQはクラウドネイティブの原則に従って設計されており、Kubernetes準拠のあらゆるプラットフォーム間で移植可能です。アプリケーションは標準のKubernetes APIを使用し、プロプライエタリなクラウドプロバイダー拡張は使用していません。

12-Factor Appへの準拠

ファクター KanjiIQの実装
I. コードベース バージョン管理で追跡される単一のGitリポジトリ(Forgejo)
II. 依存関係 pubspec.yaml(Dart)およびrequirements-docs.txt(Python)で明示的に宣言
III. 設定 Kubernetes SecretとConfigMapを通じて注入される環境変数
IV. バッキングサービス DATABASE_URLを通じてアクセスするPostgreSQL — コード変更なしで交換可能
V. ビルド、リリース、実行 マルチステージDockerビルド → タグ付きイメージ → Kubernetesローリングアップデート
VI. プロセス ステートレスなアプリケーションコンテナ;状態はPostgreSQLに保存
VII. ポートバインディング 自己完結型サービス:frontend :80、backend :8080
VIII. 並行性 Kubernetesレプリカによる水平スケーリング
IX. 廃棄容易性 高速起動、グレースフルシャットダウン、ヘルスプローブ
X. 開発/本番一致 ステージングnamespaceが本番マニフェストをミラーリング
XI. ログ 標準出力/標準エラー(Kubernetesがノードファイルシステムにキャプチャ)
XII. 管理プロセス データベースマイグレーションをワンオフコマンドとして実行

KanjiIQがクラウドネイティブである理由

標準Kubernetes APIのみ

すべてのリソースは標準のapps/v1v1networking.k8s.io/v1 APIグループを使用しています:

  • Deployment(クラウド固有のマネージドサービスではない)
  • Service(ClusterIP — どこでも動作)
  • Ingress(標準ネットワーキングAPI)
  • PersistentVolumeClaim(クラウド非依存のストレージリクエスト)
  • Secret(標準設定管理)

唯一の非標準CRDはTraefik Middlewareです — これはあらゆるプラットフォームで同等のingressコントローラー機能に置き換えることができます。

すべてをコンテナ化

すべてのコンポーネントに本番用のDockerfileがあります:

コンポーネント Dockerfile ベースイメージ
Frontend Dockerfile.frontend nginx:alpine
Backend Dockerfile.backend dart:stable
Documentation Dockerfile.docs nginx:alpine

すべてのイメージは:

  • マルチステージビルドを使用(小さな本番イメージ)
  • 非root(UID 1000)で実行
  • ヘルスチェックを含む
  • コンテナレジストリにプッシュ(任意のレジストリに移植可能)

Infrastructure as Code

インフラストラクチャの100%がバージョン管理されたYAMLで定義されています:

k8s/
├── 00-namespace.yaml
├── 01-secrets.yaml (template)
├── 02-postgres-pvc.yaml
├── 03-postgres-deployment.yaml
├── 05-deployment.yaml
├── 06-service.yaml
├── 07-ingress.yaml
├── 08-security-middlewares.yaml
└── ...

環境全体をゼロから再作成するには以下のみが必要です:

kubectl apply -f k8s/

移植性の評価

コンポーネント 移植性 備考
アプリケーションDeployment 完全に移植可能 標準k8sマニフェスト
Service 完全に移植可能 ClusterIPはどこでも動作
Ingress ほぼ移植可能 ingressクラスの変更が必要な場合あり
PVC 完全に移植可能 クラウドプロバイダーが自動プロビジョニング
Secret 完全に移植可能 すべてのクラウドで同じAPI
Traefik Middleware 適応が必要 クラウドネイティブの代替手段に置換
コンテナイメージ 完全に移植可能 任意のOCIレジストリにプッシュ
CI/CD 適応が必要 Forgejo Actions → GitHub Actions / Cloud Build

AWSおよびGCPへの詳細な移行ガイドは移植性を参照してください。