シュっ、SpinnakerとIstio(あれシュミスティオだっけ?)でシュメッシュを作る!( Part1 ) #docker #mirantis #kubernetes #k8s
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本ブログは Mirantis 社の blog 記事「Spinnaker Shpinnaker and Istio Shmistio to make a shmesh!」の翻訳記事です。
あなたの上司が背後からそろーりと近づいてきて「問題があるんだけどさー」と言うとき、それは「この問題どうにかしてよ」という意味ですよね。
Mirantis の顧客は、ベアメタル上でアプリケーションサービスを配信するウォーターフォールスタイルから、クラウドネイティブアプリケーションを対象として CI/CD などを駆使した,より近代的なアプローチへと移行しようとしています。私はこの手の問題を数多く取り組んでいます。
クラウドネイティブへの移行を目指している企業の多くが幾つかの問題に直面しています。
1つ目は、製造、検証、リリースに至るデリバリーのあらゆるものを混ぜ合わすことが出来ること。
2つ目は、必要に応じてプロセスを何度でも繰り返すことができる堅牢なパイプラインを作成できること。
3つ目は、対象となるすべてのソフトウェアのデリバリ要素を組み合わせることを可能とすること。
これら3つの問題に対応出来る熟成したツールやサービスが見当たらないということが大きな問題になっています。
Mirantis での私の仕事では、お客様の立場に立って物事を見ることを大切にしています。そのために、「ミルクと蜂蜜の国への旅(Kubernetesを活用した豊かで新しい世界への旅)」を書き記そうと決めてました!
Chapter 1: Shmesh の誕生
その日、私はいつものように自宅で、クラウドネイティブアプリケーションを CI/CD するために必要なすべてのもの提供するアプリケーションサービス環境の構築に没頭していました。
最初の出発点は、インフラストラクチャを友達のように大切に扱うことから、使い捨ての道具として扱うことへの論理的な手法を定義することです。
アプリケーションをホストするインフラでは、ポータブルでイミュータブルなインフラパターンを提供しなければならないことはわかっていました。
ポータブルでイミュータブルなインフラストラクチャの上に置かれ、リカバリ性と回復力を提供するためにアプリケーションが重くなることもなく、アプリケーションのサービス環境のニーズに適合するツールのセットがないか探索し始めました。
私は、Kubernetes を見つけた時にこれだと確信して小躍りしました!
またさらに、開発の容易さも見逃せない要素でした。
次に注目したのは、アプリケーションサービスの製造、テスト、リリースに必要な複雑なステップを連続的なフローでまとめるためのワークフローエンジンでした。
そして私は、Spinnaker ワークフローエンジンを見つけました!
( 孫と一緒に「シュレック」を 137回目 観た後だったので、私は「 Shpinnaker!」と叫んでいました。
Shpinnaker(!)はもともと Netflix によって開発されました。その後、Google、Capital One、Mirantis のような重量級の開発チームに採用され、クラウドネイティブアプリケーションの継続的なデリバリのために、リリースプロセスのステップを長期的に把握して維持するために使われています。(これについては後の章で詳しく説明します)
私と一緒に仕事をしている開発チームや運用チームが必要とする様々なプロセスを経験する中で、Kubernetes は「 self-healing 」、「 auto-scaling 」、「 contraction 」などいくつかのニーズは満足しています。しかし、開発機能、特にアプリケーション開発者が使用する内部の統合ポイントに関連したものについては、別の Pod や Deployments で何度も作り直さなければならないことに気がつきました。もちろん、猫の皮を剥ぐ方法はいろいろあるように、FW、DNS、DHCP、さらには LB などはインスタンスごとに微妙に異なる処理をする傾向があり、CI/CD をより困難で複雑なものにしていました。
そして、それが Istio (この時点で「シュレック」を153回見たので、私の中では「Shmistio」になっています。)へとつながっていきます。Istio は、Control プレーンと Data プレーンの間のプロキシサービスとして Envoy を使用して Kubernetes と統合されたプラガブルなサービスメッシュを提供します。( Istio についても後の章で取り上げます )。
Istio で Spinnaker の最初のバージョンをデプロイしたとき、私はその結果にとても満足し、妻に「見て、バニー、僕は Shmesh を作ったよ!」と言いました。
すると彼女は箒とチリトリを持ってきて、彼女のビジネスである Ebay の商品が乱雑に散乱しているリビングルームを見渡し、「そのゴミはどこにあるの?」 といったので、
「 いや... Istio と Spinnaker を使ってアプリケーションサービスメッシュを作ってみたんだ...だから Shmesh! なんちゃって。」
彼女はただ首を振って部屋を出て行きました。(倦怠期ですかね。)
バニーの反応は置いておいて、この物語の残りの部分のための舞台を整理するために、私の "Shmesh " についていくつかのことを共有します。具体的には...
Kubernetes:たぶんあなたは Kubernetes にはすでに精通していると思いますが、そうでない場合は、概念を理解するために、このリンクをチェックしてください。
Istio:まだ Istio を知らなくても大丈夫です。アプリケーションサービスやマイクロサービスの開発と CI/CD を促進し加速するために、Istio を K8s フレームワークにどのように適用しているかという文脈で、サービスメッシュとしての Istio の機能のいくつか紹介します。
Spinnaker:Spinnaker のようなワークフローエンジンを導入することで、自動化された再現性の高い方法で「 bring everything together 」ことができる方法についてもご紹介します。
最終的にはこれらのツールを使用して、アプリケーションの CI/CD パイプラインを形成する実際の「ユースケース」を提供します。このアプリケーションは、Google Kubernetes Engine (GKE)上でのデプロイをターゲットにしており、負荷分散のバリエーションをサポートするために Istio フレームワークのコンポーネントとして「 injected 」されます。
パート2では、マイクロサービスについて話したあと、Istio をインストールして動作するように設定します。