DUICUO

このオープンソース開発ツールは本当に魔法のようです!

Heighlinerは、アプリケーションスタックをコードとして提供する最新の開発ツールです。低レベルの詳細情報を人間が読める構成ファイルにエンコードし、バージョン管理、再利用、共有が可能です。既存のスタックをインポートして、より高レベルのスタックを構築することも可能です。

Heighlinerは公式スタックを提供・保守しており、一般的なユースケースですぐに使えるエクスペリエンスを提供します。開発環境はワンクリックで起動でき、最先端のクラウドネイティブスタックを使用してアプリケーションを簡単かつ迅速に構築できます。

導入

開発者の時間は非常に貴重です。開発者がソフトウェアそのものに全力を注ぐことができず、インフラツールの調整に時間を費やしてしまうと、最終的には開発者と企業の両方にとって莫大なリソースの無駄遣いになってしまいます。

本日、私たちはHeighlinerという開発ツールを開発しました。これは、アプリケーションスタック全体をコード化(Stack as Code)できるツールです。Heighlinerを通して、開発者の皆様に「クラウドネイティブ技術スタックをコードのように管理できます。より優れたユーザーエクスペリエンスをご提供します」と伝えたいと考えています。その理由は以下の通りです。

  • Heighliner は、コード リポジトリ、アプリケーション フレームワーク、CI/CD、コンテナ イメージ、Helm チャート、監視ダッシュボード、アラート ルール、クラウド開発構成など、開発者の観点からアプリケーション スタック全体を定義します。
  • 一般的なプログラミング言語向けの公式スタックを提供しており、ユーザーは最新のクラウドネイティブ開発環境を簡単に構築できます。サポートされている言語とフレームワークには、Go、Spring、Next.js、Vue.js、Remixなどがあります。
  • ユーザーはスタックのあらゆる部分をカスタマイズできます。Dockerの創設者であるSolomon氏がDaggerプロジェクトを立ち上げ、Heighlinerスタックの開発エクスペリエンスを大幅に簡素化してくれたことを大変嬉しく思います。Daggerを使用したスタックのカスタマイズをサポートしています。公式のDaggerライブラリに加えて、クラウドネイティブテクノロジースタック向けの包括的なライブラリセットも提供しています。

上記の対策を講じることで、開発者はクラウドネイティブ開発における様々なトレンドの恩恵を継続的に享受できます。これらのトレンドは、開発者にとって最も馴染みのある方法、つまりコードリポジトリの形で更新されるため、開発者はアプリケーションアーキテクチャ全体を継続的に進化させることができます。

建築

Heighlinerを使用する前に、その全体的なアーキテクチャを理解する必要があります。Heighlinerは、大まかに言うと、以下のコンポーネントで構成されています。

コマンドライン

Heighliner CLIコマンドラインツールは、Heighliner Stacksを使用するための最適なネイティブエクスペリエンスを提供し、Heighliner Stacksを使用したアプリケーション環境の設定プロセスをユーザーガイドとして提供します。また、スタックの検索とダウンロード、環境の管理、スタック入力に基づくユーザーインタラクションの提供にも使用できます。

Heighliner CLI を使用すると、IaC スタイルの GitOps ワークフローを実行することもできます。

スタックハブ

StackHubはHeighliner Stackを保存し、アプリケーションに最適なStackを見つけるための検索可能なインターフェースを提供します。StackHubはStackのダウンロードとインストール、そして検索に使用できます。StackHubの基盤には、オブジェクトストレージやOCI互換リポジトリ(Harborなど)といったストレージバックエンドが利用されていると考えられます。Heighlinerプラットフォームはデータを識別・インデックス化し、ユーザーに検索結果を提供します。

Heighliner はクラウドでホストされるデフォルトの StackHub を提供し、CLI/UI を使用するときに使用されるデフォルトのスタックを保存します。

サービス

公式のHeighlinerサービスは、開発ワークフローの効率化を支援するために構築され、クライアント側では利用できない重要なサービスを提供しています。例えば、アプリケーションにサブドメインを割り当てる必要がある場合、HTTP APIまたはCUEライブラリを介してHeighlinerサービスを使用できます。

短剣

Daggerは、インフラストラクチャツールとサービスのオーケストレーションに使用するポータブルなCI/CD開発キットです。Heighliner Stacksの実行エンジンです。HeighlinerはDaggerのアップストリームにいくつかのライブラリを提供するだけでなく、独自のCUEモジュールを追加してDaggerを拡張し、クラウドネイティブなツールとインフラストラクチャを構築しています。

Kubernetes

Kubernetesは、コンテナ化されたアプリケーションを自動的にデプロイ、スケーリング、管理するために使用されるオープンソースのコンテナオーケストレーションエンジンです。Kubernetesは、サービスのデプロイと他のクラウドサービスとの統合のためのプラットフォーム基盤となるサービスデプロイのオーケストレーションに使用されます。

テラフォーム

Terraformは、クラウドおよびオンプレミスのリソースを定義できるInfrastructure as Codeツールです。私たちは、Terraformをインフラストラクチャリソースの設定と管理に使用しています。私たちのユースケースでは、TerraformはDaggerの1つ下のレイヤーにあります。Terraformがリソースを提供した後、DaggerはCUEモジュールを実行して、サービスのデプロイや構成の設定など、リソースとやり取りします。

インストール

まず、Heighlinerコマンドラインツールをインストールする必要があります。私はMacシステムを使用しているので、brewコマンドを使ってワンクリックで直接インストールできます。

 brew install h8r -dev / tap / highliner
hln バージョン

他のシステムでは、次のコマンドを使用してインストールできます。

 curl -L https://dl.h8r.io/hln/install.sh | sh
./bin/hln バージョン
sudo mv bin / hln / usr / ローカル/ bin / hln

あるいは、次の場所から公式リリースバイナリパッケージを直接ダウンロードしてインストールすることもできます: https://github.com/h8r-dev/heighliner/releases

次に、ローカルでアクセス可能なKubernetesクラスターが必要です。まだお持ちでない場合は、Kindを使ってローカルインストールすることをお勧めします。推奨されるDockerリソースは、4コアと8GBのメモリです。Kubernetesクラスターを作成するには、以下の設定ファイル(kind.yaml)を作成してください。

 種類: クラスター
api バージョン: kind.x-k8s.io/v1alpha4
ノード:
- 役割: 制御プレーン
kubeadmConfigPatches :
- |
種類: InitConfiguration
ノード登録:
kubeletExtraArgs :
ノード- ラベル: "ingress-ready=true"
追加ポートマッピング:
- コンテナポート: 80
ホストポート: 80
プロトコル: TCP
- コンテナポート: 443
ホストポート: 443
プロトコル: TCP

次に、次のコマンドを実行して、Kubernetes クラスターと Ingress コントローラーを作成します。

 kind クラスターを作成-- image = kindest / node : v1 .23 .5 -- config = kind .yaml
kubectl apply -f https://raw.githubusercontent.com/h8r-dev/stacks/main/scripts/internal/ingress-nginx/deploy.yaml

クラスターの準備ができたら、次のコマンドを実行して Heighliner の依存関係をインストールします。

 hln 初期化
...
buildkitd の準備整うまで待機しています...
buildkitd が準備完了です!

次に、repo、workflow、write:packages、delete:packages、admin:org、user、delete_repo の権限を持つ GitHub トークンを作成します。

作成したトークンを環境変数として設定します。

 export GITHUB_TOKEN = <フレッシュトークン>

次に、Gin + Vue アプリケーションを例にして、Heighliner の使用方法を説明します。

開始する前に、次の環境変数を設定することをお勧めします。

 export NETWORK_TYPE = china_network # 意味は分かるでしょう

`hln up gin-hello-world -s gin-vue -i` コマンドを使用して、Gin+Vue アプリケーションを作成できます。

アプリケーションのステータスを取得するには、コマンド `hln status gin-hello-world` を使用できます。

 🎉 Heighliner アプリケーションgin - hello - world準備完了です アクセスURL : http://gin-hello-world.h8r.site
展開されいるサービスは次の2 つです
ジン- hello - world - フロントエンド
アクセスURL : http://gin-hello-world.h8r.site
リソースコード: https://github.com/coding-org03/gin-hello-world-frontend
ジン- hello - world - バックエンド
アクセスURL : http://gin-hello-world.h8r.site/api
リソースコード: https://github.com/coding-org03/gin-hello-world-backend
導入されたアドオン4 あります:
アルゴCD
アクセスURL : http://argocd.h8r.site
資格情報: [ ユーザー名: admin パスワード: bsj1O - Eg9iJM7fCq ]
ノーカルホスト
アクセスURL : http://nocalhost.h8r.site
認証情報: [ ユーザー名: admin @ admin . com パスワード: 123456 ]
プロメテウス- スタック
アクセスURL : http://grafana.h8r.site
資格情報: [ ユーザー名: admin パスワード: prom - operator ]
prometheus URL : http : //prometheus.h8r.site [ユーザー名: admin パスワード: heighliner123!]、alertManager URL: http://alert.h8r.site [ユーザー名: admin パスワード: heighliner123!]
ロキ

次に、ドメイン名を設定する必要があります。h8s.site を使用している場合は、この手順をスキップできます。カスタム名を使用する場合は、/etc/hosts に以下の設定を追加する必要があります。

 127.0 .0 .1 gin - hello - world . < あなたドメイン>
127.0 .0 .1 argocd . <あなたのドメイン>
127.0 .0 .1 nocalhost . <あなたのドメイン>
127.0 .0 .1 grafana . <あなたのドメイン>
127.0 .0 .1 prometheus . <あなたのドメイン>
127.0 .0 .1 アラート. <あなたのドメイン>

次に、gin-hello-world.h8r.site を通じて作成した Vue アプリケーションにアクセスできます。

GitHub には次のリポジトリがあります。

削除するには、次のコマンドを実行するだけです。

 hln ダウンジン- こんにちは- 世界

さらに、Heighliner は、GitHub リポジトリ、Helm Charts、CI/CD パイプライン、ドメイン ルート、監視ログ ダッシュボード、アラート ルールの生成にも役立ちます。