コンテンツに移動
Google Cloud

Container Engine のアップデート : Kubernetes 1.7 に対応し、セキュアなハイブリッド ワークロードを強力にサポート

2017年7月27日
Google Cloud Japan Team

オープンソースの Kubernetes 1.7 がリリースされてからさほど時間が経たないうちに、Google Cloud Platform(GCP)のマネージド コンテナ サービスである Google Container Engine で Kubernetes 1.7 が利用できるようになりました。

Container Engine は、最新リリースの Kubernetes 1.7 を最初に提供する商用サービスの 1 つであり、エンタープライズ セキュリティ、拡張性、ハイブリッド ネットワーキング、作業効率向上のための特徴的な機能を備えています。この投稿では Container Engine の新機能を紹介します。

エンタープライズ セキュリティ

Container Engine はエンタープライズ セキュリティを念頭に置いて設計されています。たとえば、Container Engine クラスタは Container-Optimized OS(COS)というコンパクトな OS をデフォルトにすることで、OS の脆弱性を最小限に抑えています。さらに、Google の SRE チームによって継続的にモニタリングや管理が行われるので、お客様がそれに時間や労力を費やす必要はありません。

Container Engine は今回のリリースで、以下のようにセキュリティ機能の強化を図っています。

  • 今回のリリースから kubelet は知る必要のあるオブジェクトだけにアクセスするようになります。Node authorizer(ベータ)により、kubelet の API アクセスは、スケジューリングされたポッドに属するリソース(秘密情報など)に制限されます。この機能は、不正侵入されたノードや信頼されていないノードからのクラスタ保護を強化します。
  • 機密性の高いワークロードでは、ネットワークの分離がセキュリティ上の重要な手段となります。Kubernetes の Network Policy API は、相互通信を許可するポッドをお客様が指定できるようにすることで、多層防御を提供し、マルチテナンシーのセキュリティを向上させます。ポリシーの強制は、アルファ クラスタでも有効にできるようになりました。
  • Google Cloud Load Balancing(GCLB)による HTTP の再暗号化によって、GCLB からサービス バックエンドまでの間でも HTTPS が使えるようになりました。これは、お客様から多くのリクエストが寄せられていた機能です。Google のグローバル ネットワークに入ったあとでもデータは完全に暗号化されており、それがお客様に安心感をもたらします。
上述の機能はかねてから Kubernetes に求められていたもので、クラスタ内のワークロードを分離することに役立ちます。Container Engine に従来から含まれていた RBAC に Node authorizer と Network Policy を組み合わせることで、マルチテナンシーの基盤強化を図っています。

  • ポッド間のネットワークの分離(Network Policy)
  • ノード間のリソースの分離(Node authorizer)
  • クラスタ リソースの一元管理(RBAC)

ハイブリッド ネットワーキング

エンタープライズのお客様が Container Engine で最も待ち望んでいた機能は、ハイブリッド クラウドと VPN のサポートでしょう。今回のリリースでは以下が追加されました。

  • すべてのプライベート IP アドレス(RFC-1918)サポートの GA(正式リリース)により、プライベート IP の範囲内でクラスタ作成やリソース アクセスが可能になり、既存ネットワークで Container Engine クラスタを使用する際の能力が拡張されます。
  • Internal Load Balancing(ベータ)を介してサービスにアクセスできます。これにより、Kubernetes と 非 Kubernetes がプライベート ネットワークで相互アクセスできるようになります 1。
  • ソース IP の保存が GA(正式リリース)となり、アプリケーションは、Kubernetes から提供されているサービスのクライアント IP アドレスを完全に認識して動作できるようになりました。

エンタープライズのための拡張性

Container Engine を使用する企業の増加に対処するため、私たちは拡張性の向上に力を注いでいます。

Kubernetes スタイルのカスタム API を提供したいというお客様からの要望を受け、API Aggregation をベータ リリースしました。これを使えば、Kubernetes API を拡張してカスタム API を提供できるようになります。たとえば、service catalog のような既存の API ソリューションを追加したり、将来 API を独自に構築したりすることが可能です。

また、カスタム ビジネス ロジックやサードパーティ ソリューションを Container Engine クラスタに組み込みたいという要望も多く寄せられています。そこで今回、アルファ クラスタに Dynamic Admission Control を導入し、クラスタにビジネス ロジックを追加する方法を 2 つ用意しました。

  • Initializers は、Kubernetes オブジェクトの作成時に変更を加えることができます。Initializers を使用すれば、デプロイされるすべてのポッドに Istio サイドカー コンテナを注入することで、Container Engine アルファ クラスタに Istio 機能を追加できます。
  • Webhooks により、エンタープライズ ポリシーをチェックできます。たとえば、デプロイされたコンテナが自社のセキュリティ監査に合格していることを確認できます。
拡張性の向上を図るプランの一環として、私たちは TPR(Third Party Resource)API を改良版の CRD(Custom Resource Definition)API に置き換える作業を進めています。CRD は Kubernetes に構造化メタデータを格納する手軽な方法であり、kubectl を介してカスタム コントローラとも簡単にやり取りできます。TPR のベータ版をお使いの方は、1.8 リリースへのアップグレードの前に、CRD への移行を予定に入れておいてください。

ワークロードの多様性

Container Engine では、新しい自動アプリケーション アップデート機能により、データベースや ZooKeeper などのキーバリュー ストアといったステートフル ワークロードの実行機能が強化されています。

  • ローリング アップデートを含む StatefulSet Update strategies(ベータ)から選択します。
  • 並列あるいは順序指定のポッド プロビジョニングにより、ロールアウトのスピードを最適化できます。Kafka などのステートフル アプリケーションで特に役に立ちます。
Google Cloud と Container Engine は、予測アナリティクスの精度向上を目的とした機械学習モデルの訓練でよく使われることから、訓練のスピードアップにつながる GPU のリクエストも多数いただいています。そこで、このすばらしい機能を試してもらうために、アルファ クラスタで NVIDIA K80 GPU をサポートするように Container Engine をアップデートしました。サポートする GPU も今後追加する予定です。

デベロッパーの作業効率向上

インフラストラクチャのことをデベロッパーが考えなくて済むようになれば、そのぶんの時間をアプリケーションの構築に割くことができます。Kubernetes はインフラストラクチャとアプリケーション管理の分離を可能にするビルディング ブロックを提供しており、Container Engine はその上にクラス最高の自動化機能を用意しています。

私たちは、ノードの自動修復および自動アップグレード機能を提供することで、クラスタの健全性を維持する作業の大部分を自動化しました。

  • 自動修復機能(ベータ)は不健全な状態のノードを監視し、デベロッパーの手を煩わせることなく自動的に修復します。
  • 今回のリリースでは自動アップグレード機能(ベータ)にノード レイヤでの Pod Disruption Budgets が組み込まれ、インフラストラクチャやアプリケーション コントローラのアップグレードを予測可能で安全なものにしています。
Container Engine はクラスタおよびポッドのレベルでの自動スケーリングもサポートしており、アプリケーションは手作業での支援なしにユーザーの需要に応えることができます。今回のリリースでは、Cluster Autoscaler 機能に対して、GCP 向けに最適化された拡張がいくつか加えられています。

  • キャパシティが不要な場合に備え、ノード プールのスケーリングで 0 もしくは 1 をサポートします。
  • 最もコスト効果の高い方法で自動スケーリングする料金ベースの Expander をサポートします。
  • 類似ノードのグループをバランスよくスケールアウトします。複数のゾーンにまたがるクラスタで役に立ちます。
自動修復、自動アップグレード、Cluster Autoscaler の組み合わせにより、アプリケーション デベロッパーはクラスタ管理者を介在させることなくアプリケーションのデプロイやスケーリングを行えます。

Container Engine の UI についても、デバッグやトラブルシューティングの手助けとなるようにワークロード関連の詳細なビューが追加されました。

個々のワークロードごとに、タイプ(DaemonSet、Deployment、StatefulSet など)、実行状態、名前空間、クラスタなどが表示されます。個々のポッドをデバッグしたり、アノテーションやラベル、レプリカ数、ステータスなどを参照したりすることも可能です。すべてのビューはクラスタをまたがる形で表示されるので、複数のクラスタを使っている場合でも、実行場所がどこであるかにかかわらず、デベロッパーはワークロードに集中することができます。

また、GCP のネットワーキングやストレージ、コンピュートと深いところで結び付いている負荷分散と構成のビューも追加されました。新しい UI は近くロールアウトされる予定です。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2537.max-1000x1000.png

Container Engine サポート リージョンの拡大

Google Cloud は、ローカルからグローバルへ、日単位から秒単位へ、プロプライエタリからオープンへという、エンタープライズ コンピューティング モデルの転換を実現しようとしています。そして、このモデルの利点を明らかにした具体例が、昨年 10 倍以上の成長を遂げた Container Engine なのです。

こうした需要の増大に応えるべく、私たちは Container Engine クラスタを新しい GCP リージョンで利用できるようにし、グローバルなキャパシティを拡大しています。

  • シドニー(australia-southeast1)
  • シンガポール(asia-southeast1)
  • オレゴン(us-west1)
  • ロンドン(europe-west2)
アイオワ、ベルギー、台湾など 5 つのリージョンではすでに Container Engine クラスタを利用できるようになっており、そこに上述の新リージョンが加わります。

以上、この投稿では Container Engine の新機能の一部にスポットを当ててきました。新機能の完全なリストは Container Engine のリリース ノートに掲載されています。

Container Engine とその関連テクノロジーをいち早く導入した企業は、すでに大きなメリットを手にしています。ここでは、それらの企業が最近得たメリットの一部を紹介しましょう。

  • 家電製品の設計や開発をビジネスとしているヨーロッパ屈指のテクノロジー企業 BQ は、Container Engine でプリエンプティブル VM を有効活用することで、クラウド ホスティングのコストを約 60 % 削減しつつ、15 から 350 へとサービスを迅速に拡張できました。詳しくはこちらをご覧ください。
  • ソーシャル メディアのネットワーキング プラットフォームである Meetup は、Container Engine の助けを借りて、オンプレミス データセンターのモノリシック アプリケーションから、マルチクラウド対応のアジャイルなマイクロサービス アーキテクチャへと移行しました。その結果、エンジニアリング チームは他のチームから独立した形で機能開発とロードマップ策定を進める自律性を獲得し、それによってリリース スケジュールは早まり、創造性が発揮され、新機能が増えました。ケース スタディはこちらをご覧ください。
  • サブスクリプション ボックス界のリーディング企業である Loot Crate は、Container Engine 上で Rails アプリケーションをすばやく本番対応に仕上げ、需要に応じてスケーリングできるようにするとともに、ダウンタイムなしのデプロイを実現するパイプラインを立ち上げました。同社が Jenkins を使って継続的デプロイ パイプラインを構築した過程については、こちらの記事をご覧ください。
私たち Google Cloud は自分たちのコンピュート インフラストラクチャを心から誇りに思っていますが、本当の意味でインフラストラクチャを価値あるものにするのは、その上で動くサービスにほかなりません。私たちは、ワールド クラスのインフラストラクチャとツール セットの上に革新的なサービスを作っています。そして、Kubernetes と Container Engineを通じて、そのようなイノベーションを世界中のデベロッパーに提供しているのです。

GCP は最新の Kubernetes 1.7 をフルマネージドで提供する最初のパブリック クラウドです。300 ドル分のクレジットが付いた 12 か月の無料試用も用意されていますので、今すぐお試しください

皆さんのフィードバックとサポートに感謝しています。これからも Container Engine の Slack チャンネルで情報をやり取りしましょう。

1 Cloud VPN を介した Internal Load Balancing へのアクセスは、現在アルファ リリースです。アクセスを希望される方はこちらから申請してください。

* この投稿は米国時間 7 月 12 日、Container Engine の Group Product Manager である Aparna Sinha によって投稿されたもの(投稿はこちら)の抄訳です。

- By Aparna Sinha, Group Product Manager, Container Engine

投稿先