こちらのイベントで登壇してきました。
https://msdevjp.connpass.com/event/154913/
クリスマスイブはクラウドネイティブ!
イベントで話したこと
クラウドネイティブという言葉やどうやってというのは組織や人によって千差万別なところもあるので、先駆者による事例を参考にしていただくとして、時系列を振り返ったりマイクロソフトのクラウドネイティブって今どんな感じなのよというのを簡単に説明しました。
その中でこちらのようにGraduateしたProjectに関して言及しましたが、特に説明もしないままイベントを終えたのでMicrosoftが絡んでいる部分だけ解説できたらなと思ったのがこの記事のモチベーションです。
Graduated Project?
そもそもGraduted Projectというのは、Chasmを超えて熟れてきたProjectのことです。
https://www.cncf.io/projects/ より引用
Spec??
どんな人でもこのProjectに参加し、Spec(仕様)を作るために協力することができ、Microsoft自身もそのSpecの議論に参加しているProjectがあります。いくらOSSだとしても多くのステークホルダーがいる中でこのSpecを作らずにすすめるのは、ガバナンスの観点から非常に難しいといえます。例えば、他のProjectとの整合が取れなくなることや、とあるベンダーに偏ったProjectになり将来性が見えなくなることなどです。
MicrosoftがCNCF blogで言及されていた”卒業”Projectとその説明
##Core DNS 2019/01/24 Graduated Announce
https://www.cncf.io/announcement/2019/01/24/coredns-graduation/
Projectの説明
CoreDNS は、クラウドネイティブ展開でサービス検索を提供する、高速で柔軟で最新の DNS サーバーです。
これは、下位互換性があり、拡張可能なKubernetesとの統合を提供するので、最新のKubernetesリリース(1.13)は、
今後のすべての展開のデフォルトDNSとしてCoreDNSを正式に推奨しています。
このサーバーは、AWS Route53 や etcd を使用して、AWS とのハイブリッドクラウド環境での
ネイティブクラウド統合にも使用でき、Google クラウド DNS サポートを間もなく追加する予定です。
とあります。
Microsoftとの関連性
発表時には、Azure DNSのサポートが含まれていなかったのですが、現時点で実はAzrue DNSもAzure DNS pluginにて参照可能になっており、下記のCoreDNSのDocsが参考になります。
https://coredns.io/plugins/azure/
Azure プラグインは、Microsoft Azure DNS からゾーンを提供する場合に便利です。
azure プラグインは、AzureでサポートされているA、AAAA、CNAME、MX、NS、PTR、SOA、SRV、
および TXT レコード・タイプなどのすべてのDNSレコードをサポートします。
Azure DNS
https://coredns.io/plugins/azure/
Containerd 2019/02/28 Graduated Announce
Projectの説明
2014 年に Docker で生まれたContainerdは、Docker エンジンの下位層ランタイムマネージャーとして
開始されました。2017 年 3 月に CNCF に承認された後、Containerdは、Docker エンジンと OCI Runc
executor間のレイヤーとして最も広範な使用方法と採用を備えた、シンプルさ、堅牢性、移植性に
重点を置いた業界標準のコンテナーランタイムになりました。
Containerdは、そもそもこちらに書いてあるとおり、当時、混沌としそうだったコンテナーランタイムの標準化のリーダーシップをとったプロジェクトでした。
Microsoftとの関連
Microsoftとのかかわりですが、こちらのドキュメントが参考になります。
- Windows 上のコンテナープラットフォームツール
https://docs.microsoft.com/ja-jp/virtualization/windowscontainers/deploy-containers/containerd
Windowsではrunc
のフォークとして、runhcs
を作り、それによってWindowsでもOCIのSpecに従ったContainerの実行を可能にしています。ただ、Windows Server 2016では、そのrunhcs
とcontainerd
はサポートするものの、CRIのサポートをするためには、Windows Server 2019以降が必要です。
- Windowsに対するKubernetesのEnhancementはこちらに。
https://github.com/kubernetes/enhancements/tree/master/keps/sig-windows
Fluentd 2019/04/11 Graduated Announce
有名な古橋 貞之氏が作った日本発のオープンソースコレクタです。とても有名なので、ここで特別に説明は必要ないと思います。
Microsoftとの関連
Azure Monitorでは、Azureで取得できたログ以外にJsonやそのほかFluentdプラグインに対応するログをAzure Monitorで統合することができます。
- Azure Monitor での Linux 用 Log Analytics エージェントを使用したカスタム JSON データ ソースの収集
https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/data-sources-json
例えば、KubernetesのLogもFluent-bitを使うことでAzure Monitor - Log Analyticsに統合できます。
- Export Kubernetes Logs to Azure Log Analytics with Fluent Bit
https://samcogan.com/export-kubernetes-logs-to-azure-log-analytics-with-fluent-bit/
まとめ
調べてみてわかった(当たり前のこと)のですが、クラウドにてManaged Serviceを提供しており、そのサービスがProjectに絡むことがあれば、当然Pluginを作ったりするビジネス的な理由があるわけでして、そういうったところにも積極的に関与していくあたり、Kubernetesの普及に関して本気で取り組んでいるんだろうなという感じでした。個人としては2020年もこのあたり積極的にウォッチしていくつもりですが、他人事ではなく、自分事にするために、機会をいただけるなら、kubernetesを使った多くのお客様のProjectに参画していきたいなと思っています。それと、まだまだContainer化やマイクロサービス化についても、誤解が多くあると思うので、ここはこうするといいよねというアンカンファレンス+BoFみたいなイベントも開催していきたいなと思っています。今年に引き続き来年もクラウド、クラウドネイティブ、コンテナー、アプリケーションモダナイゼーション、DevOpsなどの文脈で引き続き頑張っていこうと思います。