Docker・Kubernetes周辺の動向を整理してみた件

# はじめに
2018年6月にAmazon EKS（Amazon Elastic Container Service for Kubernetes）やAKS（Azure Kubernetes Service）がGAになり、2015年から正式リリースされていたGKE（Google Kubernetes Engine）を加えると、大手クラウドベンダーが揃ってKubernetesのマネージドサービスを提供するようになりました。

また、Red Hat社のPaaS基盤であるOpenShiftにおいて2015年からDocker・Kubernetesが採用されていることや、2018年2月にPivotal社からKubernetesを採用した「Pivotal Container Service（PKS）」がリリースされたことなどから、オンプレでもDocker・Kubernetesを利用することのできるコンテナプラットフォームの選択肢が増えています。

本記事では、様々な企業が最近提供している、Docker・Kubernetesを活用したコンテナプラットフォームについて、Web上の情報などを元に簡単に調査した内容を整理したいと思います。
（各コンテナプラットフォームの詳細は他の記事に譲るとして、本記事では周辺の動向の調査に努めたいです。）


# コンテナ・オーケストレーションツールのシェア
様々なベンダーがDocker・Kubernetesを採用したコンテナプラットフォームを提供している状況から既に察しがついていると思いますが、2018/5/29にモニタリングツールベンダのSysdig社が発表したレポートでは、コンテナランタイムにおいてDockerは83%のシェアを有しており、Kubernetesは51%のシェアを有しているという調査結果があります。

※参考： [2018 Docker Usage Report](https://sysdig.com/blog/2018-docker-usage-report/)

また、オーケストレーションツールのシェアにおいて、Docker（Swarm）のシェアが増えていますが、これは2017年10月にDockerがKubernetesとの統合を発表した影響があると記載されています。


# Cloud Native Computing Foundation（CNCF）の動向
次に、Docker・Kubernetesのシェアがここまで拡大したことに関する説明に欠かすことのできない、Cloud Native Computing Foundation（CNCF）の最近の動向について整理したいと思います。

## Cloud Native Computing Foundation（CNCF）とは
![img01-22.png](https://qiita-image-store.s3.amazonaws.com/0/136020/c6759648-6ba2-5b62-aadf-8598d830fb40.png)

Cloud Native Computing Foundation（CNCF）とは、Kubernetes・Prometheus・Fluentdなどのクラウドネイティブなオープンソースソフトウェア（OSS）を推進するための団体です。2015年に Linux Foundation 傘下に設立されましたが、今やAWS・Azure・Google Cloudなどの大手クラウドベンダーや、Red Hat社・Pivotal社・Docker社などのクラウド技術に関係する企業もメンバとして参加しています。


## 2018年7月時点のメンバ一覧
2017年7月から9月までの間に、Microsoft社・Amazon社・Oracle社・VMware社・Pivotal社などが立て続けにCNCFへの参加を表明しており、2018年7月現在における主要なメンバは以下の通りです。

![2018-07-17_161002.png](https://qiita-image-store.s3.amazonaws.com/0/136020/8b012e7f-1f03-2753-92a6-7edb66083ea2.png)

※参考： https://www.cncf.io/about/members/

画面キャプチャ仕切れない程多数の企業がメンバとして参加していることから、Platinum Membersだけ画面キャプチャしていますが、錚々たる顔ぶれの企業が参加していることが分かると思います。

ちなみに、日本ではまだ存在感がそれ程強くない Alibaba Cloud ですが、アメリカの企業が提供している様々なプロダクトにおいて、対象クラウドサービスに Alibaba Cloudが加えられていることが増えている印象を持っています。
例えば、Hashicorp社が提供するインフラプロビジョニングツールの Terraform では、AWS・Azure・Google Cloudに並んで Alibaba Cloud が記載されています。

※参考： https://www.hashicorp.com/partners


# コンテナプラットフォーム（Kubernetes環境）の選択肢
## 概況
2018年7月現在、コンテナプラットフォーム（Kubernetes環境）を利用するには、大きく以下の4つの選択肢が存在すると考えられます。

 - パブリッククラウドのKubernetesマネージドサービスを活用
 - オンプレに商用版コンテナプラットフォームを導入
 - 構築ツールを使用してOSSのKubernetesを導入
 - 手元のマシンにローカル環境に導入

以下にそれぞれの選択肢において、代表的なサービス・プロダクト・ツールの概要を整理したいと思います。（探せば他にも見つかると思いますが、途中で力尽きた感があります）


## GKE (Google Kubernetes Engine)
![e62b8ba687eb12b5ba8f8b8962f24116.png](https://qiita-image-store.s3.amazonaws.com/0/136020/be114fca-5289-39a4-0dcf-8c345e74edc1.png)

Kubernetesを開発していたGoogle社が、GCP（Google Cloud Platform）上で提供しているKubernetesのマネージドサービスです。2017年10月まで「Google Container Engine」と呼ばれていましたが、「Google Kubernetes Engine」に改名されました。

Amazon EKSは2018年7月現在は東京リージョンではサービスが提供されておりませんが、GKEでは2016年にGCPの東京リージョンが開設されたタイミングから東京リージョンで利用することができます。

また、GCPのロギング・モニタリングサービスであるStackdriver Logging・Stackdriver Monitoringと連携し、クラスタの可視化を行うこともできます。


## AKS (Azure Kubernetes Service)
![fd7cc81b-8f38-472b-b7b8-6c8da0057a89.png](https://qiita-image-store.s3.amazonaws.com/0/136020/f0ad1d3d-6042-f18b-2f70-3567a2285ce1.png)

Microsoft社のAzureにおいて提供されるKubernetesのマネージドサービスです。
2015年より提供していた「Azure Container Service（ACS）」に対して、オーケストレーションツールにKubernetesを採用し、2018/6/13に正式リリースされたばかりのサービスです。

2018/6/26には、早速東日本リージョンで利用可能となっています。また、2018年5月に開催された「Microsoft Build 2018」において、将来のWindowsコンテナへの対応も発表されています。


## Amazon EKS (Amazon Elastic Container Service for Kubernetes)
![eks_logo.png](https://qiita-image-store.s3.amazonaws.com/0/136020/d7005b38-07cd-3fa9-4a73-86cfbd70380f.png)

AWSにおいて提供され、2018/6/5に正式リリースされたばかりのKubernetesのマネージドサービスです。前述の通り、2018年7月時点では残念ながら東京リージョンでは提供されていません。

しかし、AWSのコンテナ関連サービスには、Amazon EKSの他に「Amazon ECS（Amazon Elastic Container Service）」と「AWS Fargate」があります。特に、AWS Fargateはコンテナのクラスタ管理を不要にしたサービスであり、2018/7/3に東京リージョンでの提供が開始されたばかりのサービスです。

AWS Fargateもコンテナプラットフォームに含まれると言えますが、Kubernetesを採用したコンテナプラットフォームではありません。東京リージョンで利用できるようになったばかりの注目のサービスですので、詳細を知りたい人は以下のURLをご参照ください。

- [AWS Fargate](https://aws.amazon.com/jp/fargate/)

また、Amazon EKSでは、Amazon CloudWatch LogsおよびAWS CloudTrailと統合され、クラスタやユーザアクティビティの可視化や監査履歴の追跡を行うことができます。


## Docker Enterprise Edition
Docker社が提供する商用版のコンテナソフトウェアです。2018年4月にDocker Enterprise Edition 2.0が正式リリースされ、オーケストレーションツールにKubernetesが統合されました。

また、2018年6月に開催された「DockerCon 2018」において、Docker Enterprise Editionの新機能として、GCP・Azure・AWSが提供するKubernetesマネージドサービスやオンプレのKubernetes環境を一元管理できる機能（Federated Application Management in Docker EE）が発表されました。これにより、異なるパブリッククラウド間や、パブリッククラウドとオンプレ間など、コンテナを統合管理できるようになるみたいです。

※参考： https://blog.docker.com/2018/06/federated-application-management-in-docker-ee/


## Red Hat OpenShift Container Platform
![openshift-container-logo (1).jpg](https://qiita-image-store.s3.amazonaws.com/0/136020/1c22bf30-0d47-06c8-f227-7ef4023c1fd1.jpeg)

Red Hat社が提供する商用版のコンテナプラットフォームです。
元々PaaS基盤として提供されていましたが、2015年にリリースされたバージョン3からDocker・Kubernetesが採用されています。

Docker・Kubernetesを採用したコンテナプラットフォームだけでなく、アプリケーション開発者が利用するWeb管理画面や、Wildfly・MongoDBなどのアプリケーションの実行環境を開発者が容易に構築できるサービスカタログ機能など、様々な機能が付加されています。

また、前述の [2018 Docker Usage Report](https://sysdig.com/blog/2018-docker-usage-report/) にも記載されていますが、Kubernetesディストリビューションの14%のシェアを占めており、商用版コンテナプラットフォームの中では利用が進んでいるコンテナプラットフォームであると言えます。


## Rancher
![rancherhero.jpg](https://qiita-image-store.s3.amazonaws.com/0/136020/41b4cede-9f61-afb0-b9b2-b610973a7138.jpeg)

Dockerコンテナとして配布され、コンテナやクラスタを管理するためのツールです。
オーケストレーションツールには独自の Cattle を利用してましたが Kubernetes に変更され、Rancher 2.0が2018年5月に正式リリースされました。

※参考： https://rancher.com/blog/2018/2018-05-01-rancher-ga-announcement-sheng-liang/

Kubernetesのクラスタ管理のためGUIが提供され、コンテナ・クラスタを操作することが可能のようです。


## Pivotal Container Service (PKS)
2018年2月に正式リリースされたばかりの、Pivotal社が提供するエンタープライズ向けKubernetesです。

同じDell Technologies傘下のVMware社が提供しているネットワーク仮想化製品である VMware NSX-T との連携や、コンテナレジストリ機能として [Harbor](https://vmware.github.io/harbor/) が統合されていることが特徴です。

また、GKE (Google Kubernetes Engine)との互換性も特徴であり、PKS上のコンテナをGKE上で動かすこともできるようです。


## VMware Kubernetes Engine
2018年6月に発表されたばかりの、VMware社が提供するKubernetesのマネージドサービスです。

「マネージドサービス」と記載されている通り、オンプレに導入するものではなく、クラウド上のマネージドサービスとして提供されます。また、最初は VMware Cloud on AWS で提供が開始されることが発表されています。


## kops
![logo.jpg](https://qiita-image-store.s3.amazonaws.com/0/136020/3b5981a7-1baf-0bc4-a1c2-4e983ac87094.jpeg)

Kubernetesクラスタの構築ツールの一つであり、AWSを正式にサポートしている構築ツールです。
GCE（Google Compute Engine）はベータサポートであり、VMware vSphereはアルファサポートとなっており、将来他のプラットフォームのサポートも計画されています。
kopsは、Kubernetesのトップレベルプロジェクトであり、クラスタのローリングアップデートやアドオンもサポートされています。


## Minikube
![1_UBwQRP_HpjawvPzlvdHfWw.jpeg](https://qiita-image-store.s3.amazonaws.com/0/136020/f2c39a17-fc9a-cec9-c252-f94a5c7f5fa3.jpeg)

手元のローカル環境においてKubernetesをお試しできるツールです。インストールにはVirtualbox・hxyve・KVM・Hyper-Vなどのハイパーバイザ―が必要となります。
また、シングルノードのKubernetes環境がローカルに構築され、冗長化は担保されないため、あくまでのKubernetesの検証やローカルでの開発が目的となります。


# まとめ（所感）
率直に疲れました。
事前に知っていたり、ニュースで見ていた記事が多かったのですが、改めて整理してみると想像していた以上に大変でした。

また、ここまでDocker・Kubernetesを活用したコンテナプラットフォームが増えてくると次にどのような動きになるかの気になりますが、特定の企業へのロックインへの懸念から、Docker Enterprise Editionのようなマルチクラウド環境を一元管理するサービスやプロダクトが増えてくるのではないかと個人的には考えています。

2017年後半から急に騒がしくなってきていますが、まだまだ変化が激しいと思うので継続的にウォッチしていこうと思います。


# 参考情報
- [2018 Docker Usage Report](https://sysdig.com/blog/2018-docker-usage-report/)
- [Cloud Native Computing Foundation](https://www.cncf.io/)
- [GKE (Google Kubernetes Engine)](https://cloud.google.com/kubernetes-engine/?hl=ja)
- [AKS（Azure Kubernetes Service）](https://azure.microsoft.com/ja-jp/services/kubernetes-service/)
- [Amazon EKS (Amazon Elastic Container Service for Kubernetes)](https://aws.amazon.com/jp/eks/)
- [AWS Fargate](https://aws.amazon.com/jp/fargate/)
- [Docker Enterprise Edition](https://www.docker.com/enterprise-edition)
- [Red Hat OpenShift Container Platform](https://www.redhat.com/ja/technologies/cloud-computing/openshift)
- [Rancher](https://rancher.com/)
- [Pivotal Container Service(PKS)](https://pivotal.io/jp/platform/pivotal-container-service)
- [VMware Kubernetes Engine](https://cloud.vmware.com/vmware-kubernetes-engine)
- [kops](https://github.com/kubernetes/kops)
- [Minikube](https://github.com/kubernetes/minikube)