KubeWeekly #203

KubeWeeklyは毎週Kubernetesに関する興味深いニュースを提供しています。（https://kubeweekly.io/ ）この記事は 2020/02/14に発行された [Kube Weekly #203](https://kubeweekly.io/2020/02/14/kubeweekly-203/)を読んで、感じたことをメモ的にまとめたものです。
私の勘違いや説明不足による誤解もあるかと思いますので、この記事読んで「おっ」と思ったらURLを辿って本文を確認してください。

(過去のKubeWeekly読書メモは[こちら](https://qiita.com/tags/kubeweekly))

※この記事は、[Z Lab](https://qiita.com/organizations/zlab)の業務の一環として作成したものです。

# The Headlines

## Novel Coronavirus Update | Linux Foundation Events
<table>
<tr>
  <td colspan="2"><a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/attend/novel-coronavirus-update/">Novel Coronavirus Update | Linux Foundation Events</a></td>
</tr>
<tr>
  <td><img src="https://events.linuxfoundation.org/wp-content/uploads/cropped-color2.jpg"></td>
  <td>Updated as of February 12, 2020 The Linux Foundation is continuously monitoring the Novel Coronavirus situation to ensure the safety of our event participants and staff. We will be following all…</td>
</tr>
</table>

コロナウイルスについてのCNCFの見解。
CDC, WHOの勧告に従うという基本方針と、いまのところKubeCon + CloudNativeConについては中止する予定はないとのこと。

握手禁止ポリシーなど、感染を広めないための参加者へのお願いなども記載されている。
中国滞在後14日経っていない人は参加できないようなことが書かれている。

## Childcare: It’s Good for Everyone - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2020/02/11/childcare-its-good-for-everyone/">Childcare: It’s Good for Everyone - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2020/02/xvgi_Pli_400x400-300x300.jpg"></td>
  <td>Guest post from Emily Omier (@EmilyOmier), a strategic content marketing consultant and contributor at The New Stack “There’s my friend Iris,” shouted my then-almost-four-year-old daughter as we walked up to...</td>
</tr>
</table>

以前のKubeConで 預かり保育サービスを活用した方の報告。KubeConは保育サービスを提供しているというアピールのようです。
次回のKubeCon EUについても ChildCareのページが用意されています。 https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/attend/child-care/

# The Technical

## Config Sync overview  |  Google Cloud
<table>
<tr>
  <td colspan="2"><a href="https://cloud.google.com/kubernetes-engine/docs/add-on/config-sync/overview">Config Sync overview  |  Google Cloud</a></td>
</tr>
<tr>
  <td><img src="https://cloud.google.com//images/social-icon-google-cloud-1200-630.png"></td>
</tr>
</table>

GKEのクラスタ内のリソースをGitOpsな方法で管理するためのオペレータ Config Syncの紹介。

## Calico for Kubernetes networking: the basics & examples
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/flant-com/calico-for-kubernetes-networking-792b41e19d69">Calico for Kubernetes networking: the basics & examples</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/780/0*L7v_jFy1NHqBiggz.png"></td>
  <td>How Calico CNI plugin extends K8s network policies</td>
</tr>
</table>

Calicoの紹介。またKubernetesのNetworkPolicyの機能に加え Calico独自のネットワークポリシーについても紹介している。

## Use Kubeflow, Rook and Istio to build an AI integrated development and delivery platform
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@jimsonghu/use-kubeflow-rook-and-istio-to-build-an-ai-integrated-development-and-delivery-platform-7e5c2ff3c914">Use Kubeflow, Rook and Istio to build an AI integrated development and delivery platform</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/1200/0*AdiGGcWYI_6KVxOE"></td>
  <td>This article may be helpful for AI engineers, AI scientists, Cloud-native developers and operations.</td>
</tr>
</table>

Kubeflow, Rook, Istio を使ったAI開発環境の構築手順を紹介。

## Docker Donates the cnab-to-oci Library to cnab.io - Docker Blog
<table>
<tr>
  <td colspan="2"><a href="https://www.docker.com/blog/docker-donates-cnab-to-oci-library/">Docker Donates the cnab-to-oci Library to cnab.io - Docker Blog</a></td>
</tr>
<tr>
  <td><img src="https://i0.wp.com/www.docker.com/blog/wp-content/uploads/2020/02/imageLikeEmbed.png?fit=996%2C736&ssl=1"></td>
  <td>Docker helped with the development of all those components, but also worked with Microsoft on the cnab-to-oci library for sharing a CNAB bundle. This library is now used at least by 3 tools: Docker App, Porter and duffle, but also internally in Docker Hub. It successfully demonstrated how to push, pull and share description of a CNAB bundle on a registry. This work will be used as a base for the future CNAB Registries specification.</td>
</tr>
</table>

Docker社がcnab-to-ociのライブラリをcnab.ioに寄贈しました。

cnab-to-oci はCNABを従来のコンテナレジストリで扱うためのライブラリです。
具体的な使い方も含めて紹介されています。このツールはdocker v0.9.0-beta1に統合されており、以降はCNABであることを意識せずに普通のコンテナイメージとして扱うことができるようです。

## Azure Kubernetes (AKS) Security Best Practices Part 2 of 4 · StackRox: Cloud-Native, Container, and Kubernetes Security
<table>
<tr>
  <td colspan="2"><a href="https://www.stackrox.com/post/2020/02/azure-kubernetes-aks-security-best-practices-part-2-of-4/">Azure Kubernetes (AKS) Security Best Practices Part 2 of 4 · StackRox: Cloud-Native, Container, and Kubernetes Security</a></td>
</tr>
<tr>
  <td><img src="https://res.cloudinary.com/stackrox/v1581379387/aks-security-best-practices-part-2-blog-banner_ezw3pi.png"></td>
  <td>In this article (part 2 of 4), we discuss AKS cluster networking and how to protect your network from external attacks and internal misconfigurations</td>
</tr>
</table>

AKSでのセキュリティベストプラクティスの4つの記事のうちの2つ目。
特にネットワーク周りについてのベストプラクティスを紹介している。

- NodeへのSSHの制限。Podからもインターネットからも制限する。
- KubernetesAPIへのアクセスの制限
- PodからVM メタデータへのアクセスの制限
- クラスタ全体のEgress通信の制限
- AKSのHTTP Application Routing Add-onの停止
- サービスメッシュのデプロイ

## Rolling Updates and Blue-Green Deployments with Kubernetes and HAProxy - HAProxy Technologies
<table>
<tr>
  <td colspan="2"><a href="https://www.haproxy.com/blog/rolling-updates-and-blue-green-deployments-with-kubernetes-and-haproxy/">Rolling Updates and Blue-Green Deployments with Kubernetes and HAProxy - HAProxy Technologies</a></td>
</tr>
<tr>
  <td><img src="https://cdn.haproxy.com/wp-content/uploads/2020/02/Deploying-Kubernetes-Updates.png"></td>
  <td>The HAProxy Kubernetes Ingress Controller supports two popular deployment patterns for updating applications in Kubernetes: rolling updates and blue-green deployments.</td>
</tr>
</table>

HAProxy Kubernetes Ingress Controllerを使い、アプリケーションのアップデートをする方法を紹介。
Deploymentを利用したローリングアップデートと、Serviceを複数用意しIngressのpath設定を複数用意することでblue-greenデプロイを行う方法を紹介している。

## Unit 42 CTR: Leaked Code from Docker Registries
<table>
<tr>
  <td colspan="2"><a href="https://unit42.paloaltonetworks.com/leaked-docker-code/">Unit 42 CTR: Leaked Code from Docker Registries</a></td>
</tr>
<tr>
  <td><img src="https://unit42.paloaltonetworks.com/wp-content/uploads/2020/02/Docker-r3d3-1024x512.png"></td>
  <td>Unit 42's Cloud Threat Report shows how unsecured registries in Docker can leak confidential data, fully compromise and interrupt businesses.</td>
</tr>
</table>

Docker Registryの設定を誤っているせいで、インターネットに情報が漏れてしまっている例の紹介。
インターネットに晒されているサーバを検索するサービス[Shodan](https://www.shodan.io/)や[Censys](https://censys.io/)を使ってDocker Registry特有のヘッダを検索し、脆弱なホストを探している。
pull, push ,deleteなどの操作を認証なしに実施できるような設定のものもあり、このような状況で放置すると、攻撃者にバックドア付きのイメージをしこまれたり、ビジネスロジックが漏洩したりする危険性がある。

## Understanding Kubernetes Storage - Stateful, Stateless, POSIX + REST
<table>
<tr>
  <td colspan="2"><a href="https://blog.min.io/kubernetes-storage-patterns/">Understanding Kubernetes Storage - Stateful, Stateless, POSIX + REST</a></td>
</tr>
<tr>
  <td><img src="https://blog.min.io/content/images/2020/02/K8.png"></td>
  <td>Kubernetes is here to stay. Understanding the optimal storage architecture requires a modern approach that is disaggregated, RESTful and scalable.</td>
</tr>
</table>

クラウドネイティブなアプリケーションにおけるステートフルのベストプラクティスの紹介。

いわゆるストレージアプリケーション以外は原理的にはステートレスにできるというようなことを述べている。
また、ストレージアプリケーションにおいてもLocal Persistent Volumeを活用することで シンプルで、スケールするアプリケーションが構築できるとのこと。

## Load balancing and scaling long-lived connections in Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://learnk8s.io/kubernetes-long-lived-connections">Load balancing and scaling long-lived connections in Kubernetes</a></td>
</tr>
<tr>
  <td><img src="https://learnk8s.io/a/4f9741344d5b7e302652468bc6be6b59.png"></td>
  <td>Kubernetes doesn't load balance long-lived connections, and some Pods might receive more requests than others. If you're using HTTP/2, gRPC, RSockets, AMQP or any other long-lived connection such as a database connection, you might want to consider client-side load balancing.</td>
</tr>
</table>

[先週紹介しました](https://qiita.com/inajob/items/d7fda373a0238b2edfb8#load-balancing-and-scaling-long-lived-connections-in-kubernetes)

> Kubernetesがうまく扱えない、持続的なコネクション(gRPC,WebSocketなど)の扱いについて紹介。
> Serviceの負荷分散の仕組みの紹介から始まり、この問題を解決するためのクライアントサイドロードバランシングの紹介や、サービスメッシュの活用例を紹介している。

# The Editorial

## CoreOS
<table>
<tr>
  <td colspan="2"><a href="https://coreos.com/os/eol/">CoreOS</a></td>
</tr>
<tr>
  <td><img src="http://coreos.com/assets/images/brand/CoreOS-twitter-embed.jpg"></td>
  <td>CoreOS Container Linux will no longer receive updates after May 26, 2020.</td>
</tr>
</table>

2020/05/26にCoreOS社のContainer LinuxがEnd of Lifeとなります。
移行先としては Fedore CoreOSを挙げています。
結構アグレッシブなスケジュールとなっているため、利用している人は注意が必要です。

## EKS vs GKE vs AKS - Evaluating Kubernetes in the Cloud  · StackRox: Cloud-Native, Container, and Kubernetes Security
<table>
<tr>
  <td colspan="2"><a href="https://www.stackrox.com/post/2020/02/eks-vs-gke-vs-aks/">EKS vs GKE vs AKS - Evaluating Kubernetes in the Cloud  · StackRox: Cloud-Native, Container, and Kubernetes Security</a></td>
</tr>
<tr>
  <td><img src="https://res.cloudinary.com/stackrox/v1581124405/eks-vs-gke-vs-aks-blog-banner_sgnqs6.png"></td>
  <td>An in-depth analysis of the current features and limitations of the managed Kubernetes services from Amazon (EKS), Google (GKE), and Microsoft (AKS)</td>
</tr>
</table>

EKS, AKS, GKEの表による比較。
細かい項目まで比較してあり力作。

## Essential Building Blocks of a DevOps Approach | The New Stack
<table>
<tr>
  <td colspan="2"><a href="https://thenewstack.io/demystifying-devops-essential-building-blocks-of-a-devops-approach/">Essential Building Blocks of a DevOps Approach | The New Stack</a></td>
</tr>
</table>

DevOpsを構成する6つの原則について紹介

- 全てを所有する・小さなチーム
- 継続的なフィードバックを得るための自動テスト
- 疎結合なアーキテクチャ
- 本番アプリケーションのテレメトリ収集によるフィードバック
- 組織全体の継続的な学習
- DevSecOps

加えて、これらを実現するためのツールの紹介。

## Kubernetes Container Management Is Not Application Management - Container Journal
<table>
<tr>
  <td colspan="2"><a href="https://containerjournal.com/topics/container-management/kubernetes-container-management-is-not-application-management/">Kubernetes Container Management Is Not Application Management - Container Journal</a></td>
</tr>
<tr>
  <td><img src="https://containerjournal.com/wp-content/uploads/2019/04/K8s-Cluster-Rancher.jpg"></td>
  <td>Application performance management is different than container management in myriad ways. Don't confuse the two if you want observability.</td>
</tr>
</table>

コンテナを実行する上でKubernetesは実行してくれるが、それだけではモニタリングや、キャパシティプランニングをしてくれるわけではないので、ちゃんとモニタリングソリューションを利用する必要がある　といった話。

## Announcing Linkerd 2.7: External PKI support, better gitops workflows, streamlined cert rotation, and more
<table>
<tr>
  <td colspan="2"><a href="https://linkerd.io/2020/02/10/announcing-linkerd-2.7/">Announcing Linkerd 2.7: External PKI support, better gitops workflows, streamlined cert rotation, and more</a></td>
</tr>
<tr>
  <td><img src="https://linkerd.io/uploads/georgia-de-lotz-xyh8P8k-X90-unsplash.jpg"></td>
  <td>We're happy to announce the release of Linkerd 2.7! This security-themed release adds support for integrating Linkerd's mutual TLS infrastructure with external certificate issuers such as Vault and cert-manager, improves gitops workflows by allowing Linkerd manifests to be generated without secrets, and makes it easy to automatically rotate TLS credentials. It also improves dashboard performance, improves usability of Helm charts, and much, much more.</td>
</tr>
</table>

Linkerd 2.7のリリース報告。

- mTLSをサポート
- gitopsワークフローをやりやすくするための改善
- ダッシュボードのパフォーマンス改善
- Helm chartの使い勝手向上

などなど。

## Istio Security Bug Found, Quickly Squashed - SDxCentral
<table>
<tr>
  <td colspan="2"><a href="https://www.sdxcentral.com/articles/news/istio-security-bug-found-quickly-squashed/2020/02/">Istio Security Bug Found, Quickly Squashed - SDxCentral</a></td>
</tr>
<tr>
  <td><img src="https://www.sdxcentral.com/wp-content/uploads/2020/02/Istio-Security-Bug-Found-Quickly-Squashed.jpg"></td>
  <td>An Istio security bug in its authentication policy that allowed an attacker unauthorized access was found and quickly patched.</td>
</tr>
</table>

Istioに重大なセキュリティバグが発見されています。1.3 - 1.3.7, 1.4 - 1.4.3を利用している方はアップデートが必要です。

## Supporting developers as they scale: a free Kubernetes eBook
<table>
<tr>
  <td colspan="2"><a href="https://blog.digitalocean.com/supporting-kubernetes-developers/">Supporting developers as they scale: a free Kubernetes eBook</a></td>
</tr>
<tr>
  
  <td>We're excited to make our Kubernetes for Full-Stack Developers course available to a wider audience as an eBook</td>
</tr>
</table>

DigitalOceanが作ったKubernetesを学ぶためのeBook。無料で読むことができます。

## 3 tips to keep Kubernetes safe at scale
<table>
<tr>
  <td colspan="2"><a href="https://www.techrepublic.com/article/3-tips-to-keep-kubernetes-safe-at-scale/">3 tips to keep Kubernetes safe at scale</a></td>
</tr>
<tr>
  <td><img src="https://tr4.cbsistatic.com/hub/i/r/2019/01/11/a4895b2a-18cc-41f1-9884-37f68723f7b5/thumbnail/770x578/22bc068684dfa880e7a8c4996fb13466/kubernetes.jpg"></td>
  <td>As more companies adopt and scale their Kubernetes systems, security has to be a major point of interest.</td>
</tr>
</table>

スケールするKubernetesクラスタを安全に利用するための3つのTips

- Role based accsess control
- Insecure code checks
- Checking exposed ports