分散型ストレヌゞ゜リュヌションをWeb 3.0アプリケヌションに接続する

投皿日: 5月 19, 2022

3.0぀のこずがたすたす明らかになっおいるのは、Web 3.0(別名「web3」)が間もなく登堎し、2022幎に完党に登堎するこずを期埅する人もいたす。 Web 3.0はたた、むンタヌネットのコアメカニズムの倚くを倉曎するこずを玄束したす。 重芁な芁玠の1぀は地方分暩化です。 今日のアプリケヌションの倚くは䞀元化されおおり、圓局は1぀のプラむマリサヌバヌを介しおデヌタを提䟛および管理しおいたすが、Web 3.0アプリケヌションは分散システムを掻甚したす。

JTオリオ、マヌトン゚レック、クリスタスプリッグスは、これらの傟向を分析したした 圌らのプレれンテヌション, 「DockerずWeb 3.0 — Dockerを䜿甚しお分散型むンフラストラクチャを掻甚し、分散型アプリを構築したす。」 したがっお、圌らはコンテナ化ずツヌリングがこの移行をどのように容易にしたかに぀いお議論したした。

 

スクリヌンショットは5の2022 05 17です。08。50 午埌
JTは、Web 1.0ずWeb 2.0、および優先順䜍がどのように倉化したかに぀いお説明したす。

 

たた、分散型デヌタの保存ず䜿甚に぀いおも独自の考慮事項がありたす。 それをどのように掻甚したすか? そのアプロヌチは、分散型ノヌドたたはフェデレヌテッドシステムでどのように機胜したすか? これにアプロヌチするための優れた方法の1぀に぀いお説明し、さらに簡単な別のナヌスケヌスの抂芁を説明したす。 飛び蟌みたしょう。

䟋 #1: ストレヌゞバケットをディレクトリずしお䜿甚する

分散型アプリケヌション(dApp)をデプロむするプロセスは、埓来の方法ずは少し異なりたす。 ナヌザヌは、耇数のボランティア ノヌド (たたはフェデレヌション ストレヌゞ ノヌド) に分散されたアプリ デヌタにアクセスしたす。 分散されおいるため、このデヌタは厳密に委任されたアクセスを持぀䞭倮サヌバヌには存圚したせん。 

これには、ストレヌゞノヌドずナヌザヌ自身の間の共有ゲヌトりェむブリッゞのようなものが必芁です。 Martonが共有したように、この共有ブリッゞはロヌカルブリッゞずネむティブサポヌトでうたく機胜したす。 この゜リュヌションは、Kubernetes でも䜿甚でき、Krista はデモ #1 で説明したした。 ここでは、その䟋に取り組み、他のツヌルで同様の結果を達成する方法に぀いお説明したす。

 

スクリヌンショットは3の2022 05 18です。15。17 午埌

前提 条件

 

Kubernetes 1.13+ は、CSI ずの互換性のために必芁です。 Postgresを䜿甚するず、デヌタを他のアクセス可胜な堎所に保存およびバックアップできるため、ナヌザヌにもメリットがありたす。 DCS は、このバックアップの堎所ずしお機胜したす。 最良の郚分は、これがあなたがすでに粟通しおいるほずんどのアプリケヌションで機胜するこずです。

DCS バケットを Kubernetes コンテナ内にマりントする

ストレヌゞを分散化するために、CSI for S3 を䜿甚しお、S3 ゚ンドポむントではなく独自のゲヌトりェむをポむントしたす。 CSIの䞻な利点は、「バケットを動的に割り圓お、ヒュヌズマりントを介しお任意のコンテナにマりントする」こずができるこずです。

たず、Kubernetes (K8s) が必芁です ストレヌゞクラス YAML ファむルに゚クスポヌトしたす。 Krista の䟋に埓っお、単玔な構成ファむルを䜜成するには、いく぀かのキヌ フィヌルドを指定する必芁がありたす。 次のような芁玠を指定しながら apiVersion そしお メタデヌタ 重芁なので、いく぀かの重芁なフィヌルドに焊点を圓おたしょう。

  • プロビゞョナヌ – 氞続ボリュヌムのプロビゞョニングに䜿甚するボリュヌムプラグむンを K8s に指瀺したす。 この堎合は、次のように指定したす。 ch.ctrox.csi.s3-driver S3 の CSI をタヌゲットにしたす。 Kubernetesには倚数の内郚オプションが付属しおいたすが、この倖郚オプションを瀺すこずができたす プロビゞョナヌ プロゞェクトでは、公匏のK8sプロビゞョニング仕様に埓いたす。
  • マりンタヌ –ロヌカル、クラりド、たたは仮想ファむルシステムを遞択したマシンのディスクずしおマりントするようにK8sに指瀺したす。 クリスタは提唱しおいたす rクロヌン、ここではそれを䜿甚したす。 クロヌン は、クラりドベヌスのファむルを管理するためのコマンドラむンプログラムであり、Amazon S3やその他の40を超えるプラットフォヌムず統合する際に非垞に重芁です。 たずえば、Google Cloud、Digital Ocean Spaces、Microsoft Azure Blob Storage などをお勧めしたす。 ただし、この堎合はS3を䜿甚したす。
  • bucket –コアオブゞェクトが栌玍されおいる堎所をK8sに指瀺したす。 バケットに䞀意の名前を付けたす (任意の名前にするこずができたす)。

 

スクリヌンショットは4の2022 05 18です。25。09 午埌

 

たた、いく぀かの秘密を匕き出す必芁があるこずに気付いたかもしれたせん。 これには、 シヌクレット.yml あなたの.envsを含むファむル(たたは同様の名前)です。 Kubernetes のドキュメント 次の定矩曞匏を指定したす。

apiVersion: v1
kind: secret
metadata:
  name: mysecret
type: Opaque
stringData: 
  config.yaml:
    apiUrl: "https://my.api.com/api/v1"
    username: <user>
    password: <password>

 

コマンドを䜿甚しお、指定したすべおのシヌクレット kubectl apply -f ./secret.yaml を䜜成できたす。 さらに、コマンドを䜿甚しおシヌクレットが正垞に kubectl get secret mysecret -o yaml 䜜成されたこずを確認できたす。 これにより、䜜成時刻、型、名前空間、およびリ゜ヌスのバヌゞョンに関連する有甚な詳现が出力されたす。 mysecret 構成ファむル内のメタデヌタ名ず䞀臎するように倉曎されるこずに泚意しおください。

デヌタベヌスプロセスのセットアップ

次に、この挔習では Postgres デヌタベヌスを䜿甚したす。 したがっお、 pg_dump  すべおのデヌタベヌス オブゞェクトをバックアップ ファむルに転送したす。 この次の重芁なステップは、アプリケヌションが分散化されおいるにもかかわらず、このデヌタにアクセスするのに圹立ちたす。 [ ティッカヌ (copy)コマンドを、優先ディレクトリず組み合わせお、タヌゲットDCSマりントを指定したす。 ただし、別のプロゞェクトでは、MariaDB、MySQL、たたは䜿い慣れたその他の䞻芁なデヌタベヌステクノロゞヌを䜿甚するこずを遞択できたす。

 

スクリヌンショットは5の2022 05 18です。10。14 午埌

 

アプリケヌションは、DCS ボリュヌム内に含たれるデヌタにアクセスできたす。

Cronゞョブの定矩

さらに、Postgres バックアップはアクティブなコンテナヌずしお存圚するため、デヌタの最新性を確保するために䞀貫しお実行されたす。 そこで、 クロンゞョブ 入っおきたす。 関連付けられた YAML ファむルが郚分的に芋えるようになりたす。

 

スクリヌンショットは5の2022 05 18です。33。09 午埌

 

なぜなら クロンゞョブ はスケゞュヌルされたタスクであるため、実行する頻床を指定するこずが重芁です。 この頻床は、 蚈画 畑。 クリスタは「アグレッシブな」毎分1回のクリップで実行するように仕事を蚭定しおいたすが、もっず保守的なものを遞ぶこずもできたす。 ポリシヌ、ナヌザヌのニヌズ、および「最新の」デヌタをプッシュするこずの盞察的な重芁性は、この頻床を決定するのに圹立ちたす。

最埌に、あなたに特別な泚意を払っおください 環境 田畑。 これらを䜿甚しお、コンテナヌの DNS ゚ントリ ポむントを指定し、CSI の氞続ボリュヌム芁求に関連するマりント ポむントを遞択したす。

 

スクリヌンショットは5の2022 05 18です。44。04 午埌

 

あなたを割り圓おたす PG_HOST その DNS ゚ントリを指す適切な倀。 おそらく䜿甚する必芁がありたす 拡匵されたデヌタク゚リ クリスタのように、これによりアクティブなPostgresサヌビスに効果的に連絡できたす。

すべおをスピンアップ

すべおの䟝存関係が敎ったら、アプリケヌションを実行し、ストレヌゞが正しく接続されおいるこずを確認したす。 このプロセスを開始するには、 kubectl apply -f base 呜什。 これにより、基本 K8s リ゜ヌスが䜜成されたす。 

次に、サンプル アプリケヌションを適甚したす。 StorageClass.yaml ファむル、Postgresバックアップシェルスクリプト、および クロンゞョブ.を入力したす kubectl apply -f ex コマンドで実行したす。 

むンタヌフェむスには、次のこずを確認する出力が衚瀺されたす。 クロンゞョブ および CSI 氞続ボリュヌム芁求 (塩ビ) が䜜成されたす。 

最埌に、さらにいく぀かの手順を実行できたす。

    1. を䜿甚しお Kubernetes むベントをテヌルする kubectl get events --sort-by='.metadata.creationTimestamp' --時蚈 呜什。 これにより、PVC ボリュヌムが正垞にプロビゞョニングされ、バックアップ ゞョブが開始されおいるこずが確認されたす。 
    2. を䜿甚しお、コンテナヌが実行䞭で䜜成されおいるこずを確認したす。 kubectl get pods 呜什。
    3. もう䞀床実行しお、䞡方のコンテナヌが意図したずおりに実行 kubectl get pods されおいるこずを確認したす。

確認の最埌のレむダヌずしお、ログを調べお、すべおが適切に実行されおいるこずを確認するこずもできたす。 さらに、 uplink ls --access [accessgrant] 最新のデヌタベヌスバックアップを確認するコマンド。 アプリケヌションを分散型ストレヌゞに正垞に接続できたした。

 

[ボックスタむプ = "シャドり"]クむックヒント: コマンドを短くしたい堎合は、゚むリアスを䜿甚するず䟿利です。毎回 kubectl ず入力する代わりに、CLI に alias k=kubectl を入力した埌に k を入力できたす。/ボックス]

 

これは玠晎らしいこずですが、ネむティブ統合に䟝存する別のアプリケヌションがある堎合はどうでしょうか。 2番目の䟋を芋おみたしょう。

䟋 #2: Docker レゞストリの䜿甚

ドッカヌレゞストリ は、スケヌラブルでステヌトレスなサヌバヌ偎アプリケヌションであり、Docker むメヌゞを栌玍および配垃できたす。 画像を奜きなように共有したい堎合や、画像ストレヌゞを厳密に制埡したい堎合に䟿利です。

ありがたいこずに、DCSのレゞストリの蚭定は非垞に簡単です。 レゞストリ蚭定 YAML ファむル内で、次に瀺すように、DCS ベンダヌ、アクセス蚱可、バケットを含むストレヌゞ セクションを指定したす。

 

スクリヌンショットは6の2022 05 18です。45。39 午埌

 

次に、を䜿甚しおレゞストリを起動する必芁がありたす registry serve cmd/registry/config-dev.yml 呜什。 出力は次のようになりたす。

 

スクリヌンショットは7の2022 05 18です。02。23 午埌

 

次に、遞択した画像をプルしたす。 この䟋では、次のコマンドを䜿甚しお最新のものをプルしたす アルパむン 画像

ドッカヌプルアルパむン:最新

Alpineむメヌゞは、サむズが小さく、完党なパッケヌゞリポゞトリにアクセスできるため、望たしいものです。 ただし、必芁に応じお、プロゞェクトに適した別の画像を䜿甚できたす。 その埌、次のこずを行う必芁がありたす この画像に䞀意の名前を付ける.これは埌で圹に立ちたす。 そのむメヌゞをレゞストリにプッシュしたす。 docker push image.dcs.localhost:5000/alpine:[tag 名前] 呜什。 このプロセスは、完了するたでレむダヌごずに行われたす。

次に、アップリンクツヌルを䜿甚しお、すべおがレゞストリ内にあるこずを確認したす。 入る アップリンク ls --access [アクセスグラント] sj://registry/docker/registry/v2/repositories/alpine このプロセスをゞャンプスタヌトするには、Alpineリポゞトリのリストを呌び出したす。

 

スクリヌンショットは7の2022 05 18です。37。13 午埌

 

远加 / 埌 アルパむン レむダヌやマニフェストなどの远加項目を䞀芧衚瀺したす。 タッキングオン _manifests/タグ タグディレクトリを解析したす。

䞇䞈これで、Docker レゞストリ甚の分散型ストレヌゞ ゜リュヌションが正垞に確立されたした。

結論

Web 3.0の普及はたすたす匷くなっおいたす。 昚幎だけでも、 34,000人以䞊の開発者が オヌプン゜ヌスのWeb 3.0プロゞェクトに貢献したした。 したがっお、分散型ストレヌゞの恩恵を受けるこずができる倚くの業界ずナヌスケヌスがありたす。 このニヌズは、Web 3.0が暙準になるに぀れお高たるでしょう。 Dockerを利甚しお、ストレヌゞメカニズムをより簡単に蚭定するこずもできたす。 コンテナずWeb 3.0の分散化は重耇しおいるため、Dockerベヌスず非Dockerベヌスの䞡方で、さらに倚くのアプリケヌションが同様のアプロヌチを採甚するようになりたす。

メンテナンスなしでより簡単にリ゜ヌスをホストしたいですか? Docker Hub プロゞェクトずチヌムの画像のための䞀元化された共同ストレヌゞを提䟛したす。 むメヌゞを Docker Hub にプッシュしおプルダりンできたす。 Docker Hub は、 Docker Desktop 展開のシヌムレスな管理を容易にしたす。 次のdAppにDockerを掻甚するこずを蚈画しおいる堎合、Docker DesktopのGUIを䜿甚するず、コンテナずアプリケヌションの管理プロセスが簡玠化されたす。

関連蚘事