KubeVela は、ハイブリッド クラウド環境でのアプリケーション配信をよりシンプルかつ高速にする、すぐに使用できる最新のアプリケーション配信および管理プラットフォームです。これは Open Application Model (OAM) の実装なので、まず OAM を理解する必要があります。 OAM の紹介OAM (Open Application Model) は、Alibaba と Microsoft が共同でオープンソース化したクラウドネイティブ アプリケーション仕様モデルです。 OAM の本質は、ソフトウェア設計における利益の分離の原則に基づいて、責任ある DevOps プロセスを高度に抽象化してカプセル化することです。これはアプリケーション中心の K8s API レイヤーです。このモデルの目的は、クラウド ネイティブ アプリケーションの標準を定義することです。 オーム OAM の名前が示すように、これはオープン アプリケーション モデルです。
OAM モデルが必要な理由は何ですか?現在、アプリケーション管理には 2 つの主な課題があります。
一般的に、主な課題は、Kubernetes に基づく真のアプリケーション管理プラットフォームを提供し、R&D と運用および保守がアプリケーション自体にのみ集中できるようにすることです。 たとえば、以下は典型的な K8s リソース リスト ファイルです。 YAML ファイルは簡素化されましたが、それでもまだかなり長いです。 k8s ヤム 上から下まで、大まかに 3 つの部分に分けることができます。
このような YAML ファイルを見ると、フィールドを内部にカプセル化して、公開する必要があるものだけを公開する必要があると考えるのは簡単です。現時点では、アプリケーション管理プラットフォームを開発し、ユーザーに約 5 つのフィールドのみを公開して、ユーザー向けの美しいフロントエンド インターフェイスを作成できます。これにより、ユーザーが K8s を理解するための精神的負担が大幅に軽減されることは明らかです。基礎となる実装では、テンプレートのような方法を使用して、これら 5 つのフィールドを完全な YAML ファイルにレンダリングします。 この方法は、単純なステートレス アプリケーションに非常に効果的であり、API を合理化することで K8s の敷居を大幅に下げることができます。しかし、大規模なビジネスが出現すると、多くの複雑なアプリケーションに遭遇することになり、その際に PaaS アプリケーション プラットフォームの能力が十分でないことが発覚します。たとえば、ZK マルチインスタンス マスター選出とマスター/スレーブ切り替えのロジックは、これらの 5 つのフィールドで記述するのは困難です。多数のフィールドをマスクするとインフラストラクチャ自体の機能が制限され、K8s は非常に強力で柔軟性が高いため、シンプルさのために K8s の強力な機能を放棄することはできません。 ミドルウェア エンジニアは、「Zookeeper を持っていますが、それに接続するにはどの K8s ワークロードを使用すればよいですか?」と尋ねました。もちろん、Operator を使わせようと思ったので、彼らは混乱し、「Operator とは何ですか?」と尋ねました。 次に、CRD、コントローラー、インフォーマー、リフレクター、インデクサーなどの関連する概念を丁寧に説明しました。もちろん、彼らはさらに混乱していましたし、もちろん、理論的には、彼らはそれらを理解する必要がありませんでした。ビジネス側はビジネスそのものにもっと注力するべきであり、もちろん私たちは彼らがこのコントローラーを書くのを手伝わなければなりません。このため、アプリケーション管理に対する R&D の要求に対応する統一モデルが必要です。 研究開発面の問題に加え、運用・保守面でも課題は数多くあります。 K8s の CRD オペレーター メカニズムは非常に柔軟かつ強力です。 CRD オペレーターを記述することで複雑なアプリケーションを実装できるだけでなく、グレースケール リリース、トラフィック管理、エラスティック スケーリングなどの運用および保守機能もオペレーターを通じて拡張できます。 たとえば、あるケースでは、HPA 範囲を定期的に設定するための CronHPA CRD が開発されました。しかし、アプリケーションの運用保守担当者は、CRD がネイティブ HPA と競合することを知らなかったため、当然ながら障害が発生しました。この痛い教訓は、私たちに事前チェックを行う必要があることを思い出させます。 K8s のメカニズムに精通しているので、各 Operator に Admission Webhook を追加することは容易に考えられます。この Admission Webhook は、アプリケーションにバインドされているすべての運用・保守機能とアプリケーション自体の動作モードを取得し、統一された検証を実行する必要があります。これらの運用・保守機能が 1 つの当事者によって提供されるのであれば問題ありません。しかし、2 社または 3 社によって拡張機能が提供される場合、情報を取得するための統一された方法がなくなります。 さらに深く考えてみると、これらの複雑な拡張機能を調整し管理するには、統一されたモデルが必要であることがわかります。 クラウド ネイティブ アプリケーションの主な特徴は、データベース、ネットワーク、負荷分散、キャッシュ、その他のリソースなどのクラウド リソースに依存することが多いことです。 Helm を使用してパッケージングするなど、アプリケーションを配信する場合、K8s ネイティブ API のみをターゲットにすることができ、RDS データベースも起動したい場合はさらに困難になります。データベース操作ページに移動せずに K8s API を通じて管理したい場合は、CRD を記述して定義し、Operator を通じて実際のクラウド リソースの API を呼び出す必要があります。 この成果物のセット全体は、実際にはアプリケーションの完全な説明であり、これを「アプリケーション定義」と呼びます。この定義方法では、すべての構成が最終的に 1 つの YAML ファイルに積み重ねられますが、これは前述のオールインワンの問題と同じです。さらに、これらのアプリケーション定義は最終的にはブラックボックスになります。該当するプロジェクト自体を除いて、他のシステムは基本的に再利用できません。 実際、多くの企業やチームも、独自のビジネスニーズに基づいて独自のアプリケーション仕様を定義しています。たとえば、Pinterest で定義されているアプリケーション仕様は次のとおりです。 PinterestCRD アプリケーション定義は実際にはアプリケーションの配信/配布に不可欠な部分であるため、十分にオープンで再利用可能なアプリケーション モデルを定義できるかどうかを検討できます。 アプリケーション定義は、使いやすいだけでなく、柔軟性も必要であり、ブラック ボックスであってはなりません。アプリケーション定義もオープンソース エコシステムと密接に統合される必要があります。エコシステムなしでのアプリケーション定義には将来性がなく、当然、継続的に反復して進化させることは困難になります。 これが、OAM を詳細に理解する必要がある理由です。 ! ! 上で述べたさまざまな問題は、最終的には、K8s の All in One API がプラットフォーム プロバイダー向けに設計されているという事実に起因します。下の図の左側に示すように、アプリケーション開発チームと運用保守チームが K8s チームと同じ API に直面することは許されません。 オールインワンAPI 適切なアプリケーション モデルには、ユーザー ロールを区別し、操作機能と保守機能をモジュール形式でカプセル化する階層構造が必要です。上の図の右側に示すように、異なるロールで異なる API を使用できるようにします。 OAM モデルの定義上記では、OAM モデルが必要な理由はわかりましたが、OAM モデルはどのように定義されるのでしょうか? 最新の API バージョン v0.3.0 (core.oam.dev/v1beta1) では、OAM は以下を定義します。
したがって、アプリケーションは、いくつかの操作特性を持つコンポーネントのセットで構成され、1 つ以上のアプリケーション境界に限定されます。 OAM モデル 特定のモデル定義仕様の詳細については、OAM 仕様ドキュメントを参照してください。ただし、現在の KubeVela 仕様は OAM 仕様とまったく同じではないことに注意してください。 KubeVelaの紹介KubeVela は OAM 仕様の実装です (実際、OAM 仕様は KubeVela で使用される仕様よりも遅れています)。これは、ハイブリッド クラウド環境でのアプリケーション配信をよりシンプルかつ高速にする、すぐに使用できる最新のアプリケーション配信および管理プラットフォームです。 KubeVela を使用するソフトウェア開発チームは、クラウド ネイティブ機能を使用してオンデマンドでアプリケーションを構築し、チーム規模の拡大やビジネス シナリオの変化に応じて機能を拡張し、アプリケーションを一度構築してどこでも実行することができます。 キューブベラ コア機能KubeVela には次のコア機能があります。
関心の分離関心の分離は KubeVela の中心的な概念です。それが KubeVela の設計哲学であり、KubeVela を他と異なるものにしているのです。 KubeVela ユーザーは当然 2 つの役割に分かれており、社内の 2 つのチーム (または個人) がそれぞれ担当します。
関心の分離 コアコンセプトKubeVela は OAM 仕様に準拠しており、Application オブジェクトを使用して、配信されるコンポーネント、関連する運用および保守機能、配信パイプライン、その他のコンテンツを含むマイクロサービス アプリケーションの完全な配信プロセスを宣言します。提供されるすべてのコンポーネント、運用および保守アクション、パイプラインの各ステップは、OAM 仕様に従って独立したプラグ可能なモジュールとして設計されており、ユーザーは独自のニーズに応じてそれらを組み合わせたりカスタマイズしたりできます。 基本的に、Application オブジェクトはエンドユーザーが知っておく必要がある唯一のオブジェクトであり、マイクロサービス アプリケーションのデプロイメント プランを表します。 OAM 仕様に従って、アプリケーション展開計画 (アプリケーション) は、コンポーネント (コンポーネント)、運用および保守特性 (特性)、展開ワークフロー (ワークフロー)、およびアプリケーション実行ポリシー (ポリシー) の 4 つの部分で構成されます。これらのコンポーネントは、プラットフォーム ビルダーによって管理されるプログラム可能なモジュールです。この抽象メソッドは、拡張性とカスタマイズ性に優れています。
全体的な定義は次のとおりです。 配信されるコンポーネントが Helm Chart であるかクラウド データベースであるか、またターゲット インフラストラクチャが Kubernetes クラスターであるかクラウド プラットフォームであるかに関係なく、KubeVela は、Application などの統合された上位レベルの配信記述ファイルを通じてユーザーと対話し、複雑な基盤インフラストラクチャの詳細を漏らすことなく、ユーザーがアプリケーションの開発と配信に完全に集中できるようにします。 キューブベラ 実際の使用では、ユーザーは上記のアプリケーション オブジェクトを使用して、プリセット コンポーネント、運用および保守機能、アプリケーション ポリシー、ワークフロー ノード モジュールを参照し、これらのモジュールによって公開されるユーザー パラメーターを入力して、アプリケーション配信のモデリングを完了します。 もちろん、上記のタイプの背後には、特定の機能を提供するためのモジュール定義と呼ばれるプログラム可能なモジュールのセットがあります。 KubeVela は、K8s API に基づいてインフラストラクチャ定義の抽象化を定義し、さまざまな機能を組み合わせる接着剤のような役割を果たします。 定義された OAM モジュールと基盤となる K8s CRD コントローラーを組み合わせることで、KubeVela アドオン プラグインを形成できます。コミュニティにはすでに、完全かつ拡大を続けるプラグイン マーケットがあります。たとえば、terraform プラグインはクラウド リソースの供給を提供し、fluxcd プラグインは GitOps 機能などを提供します。プラグインを検出して配布するためのプラグイン リポジトリを提供できる Helm と同様に、ニーズに応じてプラグインを独自に開発できます。 KubeVela アーキテクチャKubeVela の全体的なアーキテクチャは次のとおりです。 KubeVela アーキテクチャ KubeVela は、アプリケーションの配信および管理のコントロール プレーンです。これは、Kubernetes クラスターやクラウド プラットフォームなどのインフラストラクチャ上に構築され、OAM を使用して、コンポーネント、クラウド サービス、運用および保守機能、配信ワークフローを統一的にオーケストレーションして配信します。 KubeVela の設計はインフラストラクチャ自体から完全に分離されており、ハイブリッド クラウド/マルチクラウド/マルチクラスター インフラストラクチャ向けのアプリケーションの提供と管理を容易に行うことができます。 あらゆる CI パイプラインや GitOps ツールとシームレスに統合できるように、KubeVela の API は宣言型で完全にアプリケーション中心になるよう設計されており、次のような特徴があります。
具体的な実装に関しては、KubeVela は実行に独立した Kubernetes クラスターに依存しています。具体的には、KubeVela は主に以下の部分で構成されています。
もう一つの非常に重要な点は KubeVela はプログラム可能です。現実の世界では、アプリケーションの配信は複雑なプロセスになることがよくあります。比較的一般的な配信プロセスであっても、シナリオ、環境、ユーザー、さらにはチームによって大きく異なる場合があります。そのため、KubeVela は初日から配信モデルを実装するためのプログラム可能なアプローチを採用しており、これにより、KubeVela はこれまでにない柔軟性でアプリケーション配信シナリオに適応できます。 KubeVelaのインストールK8s 環境がない場合は、VelaD を使用して KubeVela を個別にインストールすることもできます。これは、KubeVela の最小限のインストールと VelaUX を使用するためのすべての依存関係を実行可能ファイルにパッケージ化するコマンドライン ツールです。 VelaD は、Kubernetes クラスターの自動管理のために K3s と k3d を統合します。 もちろん、既存の K8s クラスターに基づいて KubeVela をインストールすることを選択します。クラスター バージョン >= v1.19 && <= v1.26 が必要です。 まず、KubeVela コマンドライン ツールをインストールする必要があります。 KubeVela CLI は、一般的なクラスターおよびアプリケーション管理機能を提供します。次のコマンドを使用して直接インストールできます。 インストールが完了したら、vela version コマンドを使用してバージョン情報を表示できます。 次に、次のコマンドを使用して KubeVela コントロール プレーンをインストールします。 インストールが完了すると、vela-system 名前空間が作成され、対応する Pod リストは次のようになります。 もちろん、Helm の使用に慣れている場合は、次の Helm コマンドを使用して VelaCore のインストールとアップグレードを完了することもできます。 上記では、KubeVela コントロール プレーンのみがインストールされます。通常は、KubeVela の UI コンソールである VelaUX もインストールします。ブラウザからアクセスできます。もちろん、インストールしないことも選択できます。これはオプションです。 インストールも非常に簡単です。 velaux プラグインを有効にするには、次のコマンドを実行します。 VelaUX には認証アクセスが必要です。デフォルトのユーザー名は admin で、デフォルトのパスワードは VelaUX12345 です。初回ログイン後は必ず新しいパスワードをリセットし、安全に保管してください。 また、デフォルトでは、VelaUX はポートを公開しません。ポート転送を使用すると、プロキシ方式でローカル ポートを介して VelaUX コンソールにアクセスできます。 選択 > ローカル |ヴェロー |ポート転送を有効にするにはvelauxを使用します。 VelaUX コンソール プラグインは、Kubernetes サービスと同じ 3 つのサービス アクセス方法 (ClusterIP、NodePort、LoadBalancer) をサポートしています。デフォルトのサービス アクセス方法は ClusterIP です。 VelaUX コンソールのアクセス方法は、次の方法で変更できます。 サービス アクセス メソッドを LoadBalancer または NodePort として指定すると、vela status を実行してアクセス アドレスを取得できます。 期待される出力は次のとおりです。 クラスター内に利用可能なイングレスとドメイン名がある場合は、次のようにしてデプロイ中に VelaUX のドメイン名を指定できます。 さらに、VelaUX はデータベースとして Kubernetes と MongoDB をサポートしています。デフォルトのデータベースは Kubernetes です。実稼働環境のエクスペリエンスを強化するために、MongoDB を使用することを強くお勧めします。 ベラUXこれで、http://vela.k8s.local から VelaUX コンソールにアクセスできるようになりました。初めてアクセスするときに、管理者アカウント情報を設定できます。 ベラウイ VelaUX は、企業がすぐに使用できるクラウドネイティブのアプリケーション配信および管理プラットフォームである KubeVela のプラグインです。同時に、企業での使用に必要な概念もいくつか追加されています。 ベラUX プロジェクト KubeVela プラットフォーム上で人員とリソースを編成するビジネス キャリアとして、プロジェクトはメンバー、権限、アプリケーション、割り当て環境を設定できます。外部コード ライブラリとアーティファクト ライブラリをプロジェクト ディメンションに統合して、完全な CI/CD パイプラインを実現します。外部の需要管理プラットフォームを統合してプロジェクトの需要管理を提示します。マイクロサービス ガバナンスを統合して、複数環境のビジネス共同デバッグと統合ガバナンス機能を提供します。このプロジェクトは、ビジネス レベルのリソース分離機能を提供します。 デフォルトでは、VelaUX は default という名前のプロジェクトを作成します。プロジェクト管理でさらに多くのプロジェクトを作成できます。 プロジェクト 環境環境とは、通常の意味での開発、テスト、および運用環境のビジネス記述を指し、複数の配信ターゲットを含めることができます。環境は、上位層アプリケーションと基盤となるインフラストラクチャ間の対応関係を調整します。異なる環境は、管理および制御クラスターの異なる Kubernetes 名前空間に対応します。同じ環境内のアプリケーションのみが内部アクセスおよびリソース共有機能を持つことができます。 また、デフォルトでは、VelaUX は default という名前の環境を作成します。環境管理でさらに多くの環境を作成できます。 環境 アプリケーションはリリース時に複数の環境にバインドすることができ、環境ごとに環境レベルのデプロイメントの違いを設定できます。 配送先配信ターゲットは、Kubernetes クラスターまたはクラウドのリージョン (Region) とプライベート ネットワーク (VPC) に対応して、アプリケーションの関連リソースが実際にデプロイされる物理スペースを表すために使用されます。一般的なアプリケーションの場合、コンポーネント レンダリングによって生成されたリソースは、配信ターゲットによって指定された Kubernetes クラスター (指定されたクラスターの名前空間に正確に一致する場合があります) に作成されます。クラウドサービスの場合、リソースが作成される際、配信先に指定されたクラウドベンダーのパラメータに従って、対応するリージョンとプライベートネットワークにリソースが作成され、生成されたクラウドリソース情報は、配信先に指定されたKubernetesクラスターに配信されます。単一の環境を複数の配信ターゲットに関連付けることができるため、その環境ではマルチクラスター配信が必要になります。 1 つの配信ターゲットは 1 つの環境にのみ対応します。 配送先 応用アプリケーションは、マイクロサービス ビジネス ユニットを定義する製品 (バイナリ、Docker イメージ、Helm Chart など) またはクラウド サービスの配信と管理の要件です。コンポーネント、運用および保守機能、ワークフロー、アプリケーション戦略で構成されます。アプリケーション ライフサイクル操作には次のものが含まれます。
VelaUX アプリケーションのその他の概念は、KubeVela コントローラーの概念とまったく同じです。 最初のKubeVelaアプリケーションKubeVela をインストールしたので、これを使用して最初のアプリケーションをデプロイし始めることができます。 以下では、ステートレス サービス コンポーネントと運用および保守特性を含む単純な OAM アプリケーションを定義し、3 つのデプロイメント戦略とワークフロー手順を定義します。このアプリケーションの説明は、サービスを 2 つのターゲット名前空間にデプロイし、最初のターゲットがデプロイされた後、手動レビューを待ってから 2 番目のターゲットにデプロイし、2 つのインスタンスを 2 番目のターゲットにデプロイすることを意味します。 最初にPROD名空間を作成するには、VELA env Initコマンドを使用するか、kubectl create nsコマンドを直接使用できます。 次に、最初のKubevelaアプリケーションを開始できます。 Vela Upコマンドは、説明に従って上記のアプリケーションオブジェクトを対応するK8Sリソースオブジェクトに翻訳およびレンダリングします。展開が完了したら、Velaの関連コマンドを使用して、アプリケーションの関連情報を理解できます。 まず、VELAステータスコマンドを使用して、アプリケーションの現在のステータスを表示できます。上記のアプリケーションで定義されているワークフローは、最初にアプリケーションをローカルクラスターのデフォルトの名前空間に展開し、次に2番目のステップに入るため、サスペンドタイプのワークフローです。したがって、通常の状況では、アプリケーションは、最初のターゲット展開を完了した後、一時停止状態(左側のワークフローシング状態)に入ります。 ワークフローを継続するには、2番目のターゲット展開のアプリケーションを承認するために、手動レビュー(左に示されている2番目のステップ)が必要です。次のコマンドを使用するだけです。 もちろん、Velaxuxコンソールでアプリケーションのステータスを確認することもできます。また、コンソールで直接手動レビュー操作を実行することもできます。 Velaxuxの承認 承認後、Target-ProdおよびDeploy-HA戦略を適用するために、3番目のステップDeploy2Prodが実行されます。 上記のワークフロー全体の後、アプリケーションは最終的にデフォルトの名前空間の下にポッドを作成し、2つのレプリカポッドがProd Namesスペースの下に作成されます。 また、Velauxコンソールでアプリケーションステータスを確認することもできます。 Velauxアプリケーション これにより、最初のKubevelaアプリケーションの展開プロセスが完了します。 |
<<: クラウドゲートウェイに基づくディープパケットインスペクション技術についての簡単な説明
>>: フォレスターが2023年のクラウドコンピューティングのトップ10トレンドを発表
[[428799]]この記事はWeChatの公開アカウント「Mingge's IT Essa...
Providerservice は 2005 年に設立されたドイツの企業です。主な事業は、サーバーレ...
近年、地方のウェブサイトが盛んになり、全国規模のウェブサイトも積極的に設立され、地方支部が開設される...
数日前、私はDockerfile[1]のHere-Doc構文をテストしましたが、役に立たないことがわ...
白城旅行網のオフィスに入ると、ロビーに華源旅行社(以下、「華源」)と「白城網」の2つの看板が掲げられ...
BizReachは日本発のハイエンド求人サイトです。年収1,000万円(人民元換算82万8,000元...
陳漢慈ある日の午後、一杯のコーヒーを飲みながら、4時間以上にわたって、恒大音楽会社の社長である宋科は...
このトピックを初めて見た人は、間違いなく著者が頭がおかしいと思うでしょう。そして彼は本当に頭がおかし...
Maxthon Host(Maxthon Cloud、Maxthon VPS、Aoyoyun)の韓国...
K-station事件を経験した後、ほとんどのウェブマスターはBaiduの自然なランキングに疑問を抱...
マルチクラウド環境は急速に変化しています。企業には、クラウド専用に構築され、デジタル変革戦略に沿った...
Frontrangehosting からメールが届き、そのメールから、同社は Total Serve...
データをアクションと価値に変えることに専念する Splunk, Inc. は本日、新しい Amazo...
今や SEO は特別な秘密でも、神秘的なものでもありません。SEO チュートリアルはどこにでもありま...
北京時間1月4日夕方のニュースで、Googleは本日、Chromeウェブサイトが自社の広告規制に違反...