大在庫:アプリケーション管理の新EU 2019アスペクトKubeConフィールド!

著者|鄧小香港スーパー

我々はすべて知っているように、オリジナルのクラウドアーキテクチャ学生センタープロジェクトはKubernetesあり、そしてKubernetesは拡大して「適用」を中心にです。より大きな役割を果たしているネイティブ技術変化を曇らせるために、チームや組織に具体的な利益をもたらすために、より効率的に開発者がすることができ、より優れたアプリケーションの展開をしてみましょう。両方の洪水変更の勢いは古いクローズド内部システムを巻き込んだ、と春の雨は、より多くの新しい開発ツールを出産した場合。このKubeConでは、アプリケーションの管理と展開に関する新しい知識がたくさんありました。これらのアイデアの知識や価値の学習のアイデアは、私たちは回り道を避ける聞かせて、何ですか?その背後にある、だけでなく、技術の進化の方向の種類を示しますか?

この記事では、我々はコンテナアリクラウドプラットフォーム技術の専門家で、かつてのCoreOSエンジニア、K8Sオペレータトウホンチャオ、「アプリケーション管理」の分野では、コンテンツの本質の中核プロジェクトの一つを招待し、この会議は一つずつリーダーズチョイスを分析することですそして、コメント。

Configが変更します

Kubernetesにデプロイされたアプリケーションは、一般的にConfigMapを保存し、その後、ポッドにファイルシステムをマウントするように設定します。ConfigMapを変更すると、唯一のポッドマウントされたファイルに自動的に更新されます。このような行為は、いくつかのアプリケーションが自動的にそれがOKである(たとえば、nginxのような)熱を作るために更新されます。しかし、ほとんどのアプリケーション開発者のために、彼らはそれがグレーのアップグレードを行う必要があり、コンテナConfigMapに関連した新しいグレーのリリースを、行うために構成を変更すると信じてする傾向があります。

グレーだけではなく、ユーザーコードを簡素化し、セキュリティと安定性を高めるだけでなく、不変の思想的基盤を反映してアップグレードします。一度アプリケーションをデプロイし、変更しないでください。あなたは限りシステムの新バージョンの展開として、アップグレードしてから、うまく古いバージョンを破壊するためにOKを検証する必要がある場合、認証が失敗したときに簡単に戻って古いバージョンにロールバックすることができます。これは、考えに基づいている、R&Dプッシャーウェーブからのエンジニアは、展開ツールの変更及びその結果としてのアップグレードに関連した自動監視展開ConfigMap /秘密が引き金となりました。、変更がある場合、およびハッシュPodTemplate注釈の更新を再計算し、このツールの独特な特徴は、それが自動的に内部PodTemplate注釈にハッシュを計算するために内部のすべてのデータを入れた後、ConfigMap /秘密の内部展開PodTemplateを検索するということですこれにより、展開のアップグレードをトリガします。偶然にも、オープンソースコミュニティだけでなく、別のツールのリロード機能も同様の機能を作った - 違いは、リロード機能は、ユーザーが数ConfigMap /秘密のリスニングを埋めるために何を選択することができます。

分析とコメント

アップグレードが灰色ではなく、バックポット涙の2行。アプリケーションイメージをアップグレードしたり設定を変更するかどうか、あなたは新しいグレーのリリースと検証を行うことを覚えておく必要があります。

また、我々はまた、クラウドコンピューティングを構築するための不変のインフラが新たな視点をもたらしていることがわかります。この方向に移動し、アーキテクチャは、より安全で信頼できるようにするだけでなく、他の主要なツールと話をするだけでなくすることは、クラウドネイティブのコミュニティ、伝統的なアプリケーションサービスの役割を十分に発揮する、優れた組み合わせ「コーナー追い越し。」例えば、完全に統合されたプロジェクトと加重ルーティング機能上記Istio波、サイトには、少量のトラフィックの効果を達成することができるようになりますその新しい構成の検証。

サーバー側で適用します

Kubernetesは、宣言的資​​源管理システムです。ユーザー定義は、ローカルな状態を希望して、クラスタの状態が現在適用されkubectl利用者の一部によって指定されている更新する話をします。しかし、それははるかに単純なものから、それが聞こえるようです...

元kubectlは、クライアントベースの実装を適用します。他の人がそのようなコントローラ、入学、ウェブフックとして、リソースを変更するために行くだろうがあるので、単純に、個々のリソースの全体的な状況に代わるものではありませ時に適用されます。他の人が変更を上書きしませんしながら、どのようにして、リソース変更することを保証するのですか?そして、既存の3ウェイ・マージがあります:ユーザーポッド注釈の存在下で、最後に適用状態は、(最後に、日付、ユーザーが状態を指定適用)に基づいて、次の時間を適用する3ウェイ差分を行い、その後、APIServerに送信されたパッチを生成します。しかし、これはまだ問題があります!意図を適用することは、個人が自分の管理下にどのリソースフィールドを指定できるようにすることです。しかし、それは元が互いに異なる個体間のフィールドを改ざんを防止し、紛争を解決するときにユーザーに通知していなかった達成することはできません。例えば、製品は、コントローラが付属しているため、ユーザーが唯一の修復するために誰かを送ることができるクラスタの故障につながる、いくつかの特別なラベルのNodeオブジェクト、紛争の結果を変更するために行くだろうCoreOSでオリジナル作品の著者。

クトゥルフのこのタイプは、すべてのK8Sユーザーをオーバーハング恐怖、そして今、我々は最終的に勝利の夜明けを迎えた - それは、サーバー側で適用されています。APIServerは差分を行うと、マージ操作を、元脆弱な現象の多くが解決されています。さらに重要なのは、最後に適用された注釈を元に比べて、新しいサーバーを適用するフィールドを明示的に管理するどのリソースを指定する(ManagedFieldsと呼ばれる)宣言型APIを提供します。衝突が発生した場合、kubectlコントローラ等は、同時にフィールドを変更し、リクエストの非管理者(管理者)と解決するプロンプトエラーを返してきました。

分析とコメント

私の母は、もはや私が適用されますkubectlを心配する必要はありません。アルファ段階にある間、サーバーは時間の問題、代替クライアントを適用します。このように、異なるコンポーネントは、同じリソースへの変更は、より安全で信頼性の高いとなりながら。

また、我々はまた、システムの開発、宣言型APIの特に広く使用して、それはサーバ側でローカルロジックに少なくなるだろうことがわかり以上になっています。サーバ側は多くの利点があるに:多くの操作は、そのようなkubectlドライラン、差分などを、サーバ側に簡単に実装されます。に複雑なロジック、HTTPエンドポイント、他のツールに適用される、このような機能を構築するので、はるかに簡単ですを提供サーバー側の実装と、ユーザーが安全に、一貫性のある、高品質のサービスを楽しむことができ、それが簡単に制御を行うことを公表。

Gitops

誰もが総括するために、ここで、メリットGitopsを議論するためにディスカッション・グループ会議があります。

まず、Gitops家中のチームより「民主主義は」でした。すべてがダウン書かれた、私が見てみたいです。すべての変更はまた、あなたが評価に関係するコメントを入力することができ、プルリクエストを投稿する前に、だけでなく、あなたが非常にはっきりと知らせ取る必要があります。すべての変更は、GitHubの、その他のツール上のすべての議論に記録されている、あなたは常に歴史を見ることができます。これらの様々なメイクより流動チームワークとプロ意識。

第二に、Gitopsは、出版社がより安定確保することができます。コードは、もはや自由に公開することができ、あなたは評価よりもさらに責任者を、必要としません。ときにロールバックする必要性、内部が元のバージョンのGit。誰が何をどのようなタイムコード、監査履歴に掲載しました。より専門的なこれらの様々な公開プロセスは、これより信頼性の高い結果を公表します。

分析とコメント

だけでなく、技術的な問題を解決するためにGitopsが、主な、このような歴史のGithubのバージョンなどのツールを使用すること、監査、行う権限なので、チームワークとパブリッシングプロセスは、より専門的で合理化。

それは広く業界全体への影響は甚大になることができればGitops。たとえば、すべての企業に行くかどうか、誰もがすぐにコードをリリース始めることができます。

真実のアイデアの源としてコードやGitのような構成を反映しGitopsは、まだ我々の研究と実践の非常に価値があります。

自動カナリアロールアウト

カナリア解放(カナリアロールアウト)、新しいバージョンへの流れの第1の小部分、解放プロセスを指し、そして分析し、動作が正常でオンライン検証。すべてが徐々にトラフィックがないまで、新しいバージョンに古いバージョンを切り替えて破壊された流れ続け、正常です。私たちは、スピンネーカーや他のツールでは、手動の確認手順およびスルーがあることを知っています。実際には、このステップは、このようなチェック遅延の下でP99と成功率などの機械的なもの、のすべての種類の各検査の後、自動化ツールと一緒に交換することができます。

上記の考え方に基づき、アマデウスとDatadogからのエンジニアがKubernetes、オペレータ、Istio、プロメテウスと他のツールは、カナリアのリリースを行う方法を共有しました。アイデアが自動的にCRDに抽象化された全体カナリアの完了後に解放され、その後、カナリア解除を行うためのプロセスは、宣言YAMLファイルで十分です書くことになり、オペレータYAMLファイルには、ユーザーが作成した複合体を受け取りました運用・保守業務。ここでの主な手順は、に分かれています。

  • サービスの新しいバージョンを展開します(展開+サービス)
  • 変更Istio VirtualServiceは、新しいバージョンへのトラフィックの一部を切り替えるように構成されました。
  • 条件が満たされた場合は、サービスの応答時間の新しいバージョンのメトリックIstio成功率とP99テスト。
  • 新しいバージョンへのアプリケーション全体のアップグレードを満たしている場合、それ以外の場合は、ロールバックされます。

偶然にも、織りもオープンソース自動パブリッシングツールカナリアフラガー。違いは、最後のカットトラフィックは直接古いバージョンを破壊するまでフラガーは、過去にそのようなそれぞれの新しいカットとして、ステップの流れによって、トラフィックの5%をステップの新しいバージョンをカットします、です。

分析とコメント

カナリアリリース爽モーメントの使用は、クールされている使用されています。カナリアは、システムのリリースと安定性の成功率を改善するための助けを公開する、それが重要なプロセスアプリケーションの管理です。

加えて、我々はまた、これらの複雑なプロセスのクラウドネイティブ操作の時代とメンテナンスを簡素化し、標準化されることを参照してください。抽象CRD、によって複雑なプロセスは、ユーザーにいくつかの短いAPIオブジェクトステップになるであろう。オペレータは限り標準プラットフォームは、ユーザーがこれらの機能を過ごすことができKubernetesとして、自動化された運用・保守を使用します。トップ標準化されたプラットフォームとしてIstioとKubernetesは、簡単にユーザーが始めるできるようにするためにする能力のための強力な基盤を提供します。

最後に書かれました

この記事では、アプリケーションの管理と展開に関連したこのKubeConにおける新しい知識の数の在庫を持っています:

  • 場合は、設定ファイルの変更、なぜ、どのように新しいアプリケーションのリリースを作ること。
  • クライアントkubectlは一つの重要なポイントは、互いのリソースフィールドが改ざんされ、多くの問題を持って適用されます。これらのソリューションは、サーバ側で適用されます。
  • 技術的な問題が、主なチームを解決するため、出版プロセスをより専門的かつ合理作るためだけではなくGitops。
  • Kubernetes、オペレータ、Istio、プロメテウスこれらのトップ標準化されたプラットフォームを使用して、我々は、開発者の使用のためのしきい値を減らし、リリース運用・保守業務のカナリアを簡素化することができます。

これらの新しいアイデアは、私たちは感情で満たされてみましょう:過去に、私たちは常に羨望「インフラストラクチャの誰かの家を、」彼らはいつも良いが、手の届かないところにあります。すべての開発者が上使用するように、そして今、オープンソース・プロジェクトや技術基準は、これらの技術は、下限しきい値です。一方、微妙な変更が行われている - 「自己学習」を基本的なソフトウェアは、クラウドネイティブのキャンプに参加し始めているTwitterのような企業が増え、その結果、限界効果を減少させるの法則に直面しなければなりませんでした。オープンソースの生態系や技術基準を抱きしめ、現在は主要なインターネットビジネスの機会と課題となっています。クラウドでこの変換で航行する準備が完全に、クラウドのパワーとオープンソースで、アプリケーション指向アーキテクチャとクラウドネイティブを構築します。

おすすめ

転載: yq.aliyun.com/articles/704230