Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。Labsは、Kubernetesクラスタ間のネットワーク接続を可能にするオープンソースプロジェクトのSubmarinerを新たにリリースした。このプロジェクトは,Kubernetesクラスタ個々のオーバーレイネットワークを接続して,"マルチクラスタ"を形成するものだ。これにより,クラスタ間の通信や,アプリケーションと分散データストア間の同期が簡単にできるようになる。現在のKubernetesデプロイメントでは,すべてにネットワーク仮想化が実装されており,同一クラスタ内の複数ノードで実行されているアプリケーションが,クラスタの内部ネットワーク空間を介して互いに通信できるようになっている。Kubernetesで実行されているアプリケーションは,コンテナにパッケージされ,Podの内部にデプロイされる。Pod内のコンテナはすべて,ローカルネットワークの名前空間を共有している。Pod内にデプロイされたアプリケーションは,サービスを通じて,クラスタ内部でグローバルにアクセスできるように設定することができる。サービスはClusterIP,NodePort,あるいはロードバランサ経由でアプリケーションを公開する。Controller,外部ロードバランサ,あるいはNodePortを経由して相互に通信しなければならない。Scheer氏の先日のブログ記事によると,Submarinerは,"複数のKubernetesクラスタにデプロイされ,相互通信を必要とするマイクロサービス"のために,ネットワーク接続を提供する目的でローンチされたもので,"地理的領域を越えたKubernetes内のデータベースレプリケーションや,クラスタをまたぐサービスメッシュのデプロイのような,新たなマルチクラスタ実装のホスティング"を可能にする。Submarinerでは、ゲートウェイやネットワークトンネルを管理して、異なるKubernetesクラスタ内のコンテナを直接接続するために必要なルーティングを行う,集中型の"Submarinerブローカ"が提供されている。Submarinerの基本的なアーキテクチャは次図のようなものだ。repoより引用)リリース発表のブログ記事によると、Submarinerの主な機能は次のとおりだ。既存のKubernetesクラスタにSubmarinerを展開することができる。これにより,異なるクラスタ内にあるPodを結ぶレイヤ3ネットワーク接続が新たに追加される。IPSecトンネルを使用した暗号化ネットワーク接続が,デフォルトとして実装されている(将来的なロードマップでは,プラグイン可能な接続メカニズムが導入される予定)。複数のKubernetesクラスタを対象としたサービスディスカバリを提供する。FlannelやCalicoといった,一般的なCNIドライバとの連携が可能である。接続するクラスタ内には,Submarinerの主要な2つのコンポーネントである"submariner"(Deploymentとしてデプロイ)と,"submariner-route-agent"(DaemonSetとしてデプロイ)をデプロイする必要がある。election)を実行することで,リーダを選び出す。submariner-route-agentはすべてのノードで動作し、現在のゲートウェイノードリーダを認識する。process)を実行する。podがリーダシップを獲得し,アクティブなリーダとなるための調停を行う。Submarinerは、Kubernetesのカスタムリソース定義(CRD)を使用あるいは統合する,いくつかのコンポーネントで構成されている。CRDは、Kubernetes自体の提供する機能を容易に拡張できるように設計されたエンティティである。Submarinerでは,中央のブローカを使って情報交換を行うことで、クラスタ間のCRDを同期させている。CRDのローカルクラスタ間の双方向の同期の実行を担当する。現在のSubmarinerには,デプロイメントにいくつかの前提条件がある。最低でも3つのKubernetesクラスタを運用すること。それぞれのクラスタがユニークなクラスタIDを持ち,その中のひとつは,すべての接続されているクラスタからアクセス可能な,セントラルブローカとして動作するように設計する必要がある。DNSサフィックス)を使用すること。これは,トラフィックのセレクタ/ポリシ/ルーティングの干渉を回避するために必要である。インターネットを経由した,インスタンス間の直接的なIP接続(Submarinerをインターネット上で運用しない場合は,同じネットワーク上にあること)。NATセットアップをサポートするが,構成上いくつかの注意事項と,プロバイダ特有の構成手順がある。各クラスタのネットワーク構成に関する知識。hookをサポートするバージョン(v2.12.1以降)のHelm(Kubernetesパッケージマネージャ)をインストールすること。AWS内で実行する場合は,ゲートウェイホストであるインスタンスのソース/デスティネーションチェックを無効にして,インスタンスがリモートクラスタへのトラフィックを渡すことができるようにする必要がある。applications"を補完する意味もある。これは任意の数のKubernetesクラスタにデプロイされた同一アプリケーションのコピーを,一度にデプロイおよびアップグレードする新機能である。用途としては,クラウドの各アベイラビリティゾーンのKubernetesクラスタで運用することで冗長性を確保しているアプリケーションのリプレース,各クラスタ上で同じアプリケーションを運用しているエッジあるいはIoTデプロイメントなどが考えられる。Liang氏と席を共にして,Submariner開発の動機について聞くことができた。Applications"との関連性について,説明をお願いします。Applications"テクノロジに対する自然な拡張です。ユーザがアプリケーションを複数のKubernetesクラスタにデプロイする場合,異なるクラスタ内のPod同士で通信を行う必要性が生じます。ControllerやノードPodを経由しなければなりません。SubmarinerはPod対Podのコネクションを簡易にするので,異なるKubernetesクラスタをまたいで,Podから別のPodへの直接的な接続が可能になります。Submarinerはメッシュではありません。提供するのはレイヤ3のネットワーク接続のみです。Istioのようなサービスメッシュと統合することは可能です。Submarinerを使用することで,Istioを複数のKubernetesクラスタにデプロイすることができます。Istioのマルチクラスタサポートではクラスタ間のPod対Pod接続が必要なのですが,これはSubmarinerが提供する機能そのものです。詳細は,https://istio.io/docs/setup/kubernetes/multicluster-install/の"前提条件"に関する章を参照してください。企業では,複数のデータセンタやクラウドに別々のKubernetesをデプロイすることがよくあります。アプリケーションやサービスはこれらのクラスタに展開されるので,クロスクラスタ・ネットワーク接続は,アプリケーションのデプロイメントにおける基本的な要件になります。クロスクラスタ・ネットワーク接続があれば,アプリケーションコンポーネント間の複雑なネットワークルーティングや,ロードバランサのルールを設定する必要がなくなるので,アプリケーションのデプロイが簡単になるのです。あるクラスタにMySQLのマスタを,別のクラスタにMySQLのスレーブをセットアップするものとしましょう。Submarinerは,これら2つのPodを互いに直接通信できるようにします。HAのセットアップに必要なものです。Liang氏は,"エッジ"あるいはIoTでのKubernetesデプロイメントのユースケースで,Submarinerをマルチクラスタネットワークの提供に使用することも可能だ,とも述べている。(TOC)で行われたKubeEdgeプロジェクトをCNCFサンドボックスに含めることを提案するプレゼンテーションなどでも取り上げられていた。SubmarinerのGitHubリポジトリになるREADMEには,Submarinerはまだ運用ベースで使用するべきではないとされており,フルリリースのスケジュールも公開されていない。Labsのチームは,"[Submarinerの]使用や評価は歓迎するが,重大なバグに突き当たる可能性は少なくない"。フィードバックはGitHubイシュー,Rancherフォーラム,Slack上で送ることができる。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員として、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。