KubeWeekly #211

# KubeWeekly #211

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

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

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

# The Headlines

## API Priority and Fairness Alpha
<table>
<tr>
  <td colspan="2"><a href="https://kubernetes.io/blog/2020/04/06/kubernetes-1-18-feature-api-priority-and-fairness-alpha/">API Priority and Fairness Alpha</a></td>
</tr>
<tr>
  
  <td>Authors: Min Kim (Ant Financial), Mike Spreitzer (IBM), Daniel Smith (Google)
This blog describes “API Priority And Fairness”, a new alpha feature in Kubernetes 1.18. API Priority And Fairness permits cluster administrators to divide the concurrency of the control plane into different weighted priority levels. Every request arriving at a kube-apiserver will be categorized into one of the priority levels and get its fair share of the control plane’s throughput.</td>
</tr>
</table>

Kubernetes 1.18でアルファ機能の「API Priority And Fairness」機能の紹介。
この機能はkube-apiserverへのリクエストに優先度を設けるものです。

## TOC Welcomes Argo into the CNCF Incubator - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2020/04/07/toc-welcomes-argo-into-the-cncf-incubator/">TOC Welcomes Argo into the CNCF Incubator - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2017/12/icon_cncf_twitter.png"></td>
  <td>Project Blog Today, the CNCF Technical Oversight Committee (TOC) voted to accept Argo as an incubation-level hosted project. The Argo Project is a set of Kubernetes-native tools for running and...</td>
</tr>
</table>

ArgoがCNCF Incubatorに採択されました。

## TOC Votes to Move Dragonfly into CNCF Incubator - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2020/04/09/toc-votes-to-move-dragonfly-into-cncf-incubator/">TOC Votes to Move Dragonfly into CNCF Incubator - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2017/12/icon_cncf_twitter.png"></td>
  <td>Today, the CNCF Technical Oversight Committee (TOC) voted to accept Dragonfly as an incubation-level hosted project. Dragonfly, which was accepted into the CNCF Sandbox in October 2018, is an open...</td>
</tr>
</table>

コンテナイメージ分散システムである[Dragonfly](https://d7y.io/en-us/)がSandboxからIncubatorに昇格しました。

# ICYMI: CNCF Webinars 

## CNCF Ambassador Webinar: Welcome to CloudLand! An Illustrated Intro to the Cloud Native Landscape - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/webinars/welcome-to-cloudland-an-illustrated-intro-to-the-cloud-native-landscape/">CNCF Ambassador Webinar: Welcome to CloudLand! An Illustrated Intro to the Cloud Native Landscape - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2017/12/icon_cncf_twitter.png"></td>
  <td>Like a kid in a theme park, the number of shiny exciting new technologies teams encounter as they move into and re-architect for the cloud can be overwhelming. Thus we...</td>
</tr>
</table>

CNCF Landscapeについて説明するWebinar

## CNCF Member Webinar: Pravega: Rethinking storage for streams - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/webinars/pravega-rethinking-storage-for-streams/">CNCF Member Webinar: Pravega: Rethinking storage for streams - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2017/12/icon_cncf_twitter.png"></td>
  <td>Pravega is storage for data streams. Pravega exposes stream as a core storage primitive, enabling applications continuously generating data (e.g., from sensors, end users, servers, or cameras) to ingest and...</td>
</tr>
</table>

データストリームのためのストレージである Prevega についてのWebinar

## CNCF Member Webinar: Best Practices for Deploying a Service Mesh in Production: From Technology to Teams - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/webinars/best-practices-deploying-service-mesh-in-prod-from-technology-to-teams/">CNCF Member Webinar: Best Practices for Deploying a Service Mesh in Production: From Technology to Teams - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2017/12/icon_cncf_twitter.png"></td>
  <td>Successfully operating a service mesh in production requires much more than just `kubectl apply`: it requires drawing clear lines of responsibility and accountability among platform, service, application, security, and devops...</td>
</tr>
</table>

サービスメッシュを本番環境に導入するためのベストプラクティスについてのWebinar.

## CNCF Member Webinar: New Thoughts on Distributed File System in the Cloud Native Era - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/webinars/new-thoughts-on-distributed-file-system-in-the-cloud-native-era/">CNCF Member Webinar: New Thoughts on Distributed File System in the Cloud Native Era - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2017/12/icon_cncf_twitter.png"></td>
  <td>Distributed file system is an area which has been studied for about 20 years since the well-known Google File System. Although there are various of different distributed file systems in...</td>
</tr>
</table>

クラウドネイティブ時代における分散ファイルシステムについてのWebinar.
実際にJD.comでの事例についても紹介している。

# The Technical

## Provisioning cloud resources (AWS, GCP, Azure) in Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://learnk8s.io/cloud-resources-kubernetes">Provisioning cloud resources (AWS, GCP, Azure) in Kubernetes</a></td>
</tr>
<tr>
  <td><img src="https://learnk8s.io/a/fb1c37d39aca9eb5a920edec84514a9e.png"></td>
  <td>You can create and connect to managed cloud resources using the Service Catalog, a tool such as Kubeform or cloud-specific operators such as Config Connector and AWS Operator Service.</td>
</tr>
</table>

[先週紹介しました](https://qiita.com/inajob/items/229fcd19d4abdd9e2670#provisioning-cloud-resources-aws-gcp-azure-in-kubernetes)

> Kubernetesから、AWS, GCP, Azureも各種マネージドサービスをデプロイする方法の紹介。
> Service Catalogを使う方法と Kubeformを使う方法などを紹介している。

## Developer Workflow - Accelerated Development and Deployment on Kubernetes with Skaffold (101)
<table>
<tr>
  <td colspan="2"><a href="https://docs.agilestacks.com/article/4b2q2dcof9-development-workflow-on-kubernetes-with-skaffold">Developer Workflow - Accelerated Development and Deployment on Kubernetes with Skaffold (101)</a></td>
</tr>
<tr>
  <td><img src="https://github.com/agilestacks/stack-apps/raw/master/apps/python-flask/docs/media/vscode-5.png"></td>
  <td>Development Workflow on Kubernetes - Local Development with Skaffold. The goal of this tutorial is to provide automation for developer workflow on Kubernetes.</td>
</tr>
</table>

VSCode, Skaffoldを使った開発ワークフローの紹介。
VSCodeのプラグインとSkaffoldを駆使することでローカルで開発するかのようにKubernetes上のアプリを開発することができます。

## Controlling outbound traffic from Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://monzo.com/blog/controlling-outbound-traffic-from-kubernetes">Controlling outbound traffic from Kubernetes</a></td>
</tr>
<tr>
  <td><img src="https://images.ctfassets.net/ro61k101ee59/3v3ZEg3yXGCKUK875YOs30/31691434c81f6b570856dea323f71616/_Blogpost__Controlling_outbound_traffic_from_Kubernetes_Saving_Money__1_.png"></td>
  <td>We recently finished a major networking project which let us control internal traffic in our platform. And we've been thinking about how we can add similar security to network traffic leaving our platform.</td>
</tr>
</table>

Kubernetesからインターネットへの通信を制限する方法についての模索の記録。
NetworkPolicyによるポートの制限。IPの制限などから始まり、DNS問い合わせベースの動的なファイアーウォール、ドメイン別の専用プロキシ、とKubernetesならではの解決方法を編み出している。

この記事で制限したいのは、ホスト名ベースの通信制限で、かつHTTP/HTTPSではないものも制限したいというもので、意外とこの要件を満たすソリューションは無いようです。
最終的に採用されている方法は、案外素朴なものなので、こういう要件の制限をしたい方には筆硯の記事です。

## Extending Kubernetes with Operators
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/ingeniouslysimple/extending-kubernetes-with-operators-d99c4a02af72">Extending Kubernetes with Operators</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/1200/1*lLa_Pc1ECjiktVnBFjnCBg.png"></td>
  <td>Kubernetes operators are quickly growing in popularity. But what are they? How do you build one? And why would you build one?</td>
</tr>
</table>

Kubernetes Operatorの紹介と、[Spawn](https://spawn.cc/)という開発環境用のDBをさっと作るためのオペレータの紹介。

## Your own Kubernetes controller - Improving and deploying
<table>
<tr>
  <td colspan="2"><a href="https://blog.frankel.ch/your-own-kubernetes-controller/3/">Your own Kubernetes controller - Improving and deploying</a></td>
</tr>
<tr>
  <td><img src="https://blog.frankel.ch/assets/resources/your-own-kubernetes-controller/technology-joystick-controller-gadget-blue-console-567976-pxhere.com.jpg"></td>
  <td>In the first post of this series, we described the concept behind a Kubernetes controller. In short, it’s just a plain control loop that reconciles the desired state of the cluster with its current state. In the second post, we implemented a sidecar controller in Java. This third and last post will be focused on where to deploy this Java controller and how to improve it to be on par with a Go one. Running outside the cluster or inside? As mentioned in the first post, there’s no re</td>
</tr>
</table>

Kubernetes controllerの紹介と、Javaで作られたKubernetes controllerをどうやってKubernetes上で動かすべきかという方法の紹介。
JVMをそのまま使うのではなく、Graal VMを使いネイティブバイナリにビルドする方法を紹介している。
この方法は面倒が多いが、メモリ消費やバイナリ量の削減、コンパイル時最適化など様々な恩恵が受けられるとのこと。

## Multi-tenant Kubernetes Clusters with the HAProxy Kubernetes Ingress Controller - HAProxy Technologies
<table>
<tr>
  <td colspan="2"><a href="https://www.haproxy.com/blog/multi-tenant-kubernetes-clusters-with-the-haproxy-kubernetes-ingress-controller/">Multi-tenant Kubernetes Clusters with the HAProxy Kubernetes Ingress Controller - HAProxy Technologies</a></td>
</tr>
<tr>
  <td><img src="https://cdn.haproxy.com/wp-content/uploads/2020/03/Tenants-social-media.png"></td>
  <td>Learn how to use the HAProxy Kubernetes Ingress Controller when hosting multiple tenants in your cluster and how to configure namespaces, access controls, and resource quotas.</td>
</tr>
</table>

マルチテナントKubernetesクラスタとHAProxy Kubernetes Ingress Controllerをどのように使うのか？という記事。
Ingressの話だけでなく、複数のNameSpaceを作り、利用者に必要な権限を用意する方法なども詳しく解説されている。

## Working With Istio: Track Your Services With Kiali
<table>
<tr>
  <td colspan="2"><a href="https://www.magalix.com/blog/working-with-istio-track-your-services-with-kiali">Working With Istio: Track Your Services With Kiali</a></td>
</tr>
<tr>
  <td><img src="https://www.magalix.com/hubfs/Working%20with%20istio.png#keepProtocol"></td>
  <td>we get to start playing with Istio to understand the features and power it provides. We start by visiting one of the tools that ships with Istio: Kiali.</td>
</tr>
</table>

Istioを利用し、Kialiによるトラフィックの可視化を実現する方法について。
KialiでWebUIによるBlueGreenの割合の変更などもできるようです。

## Be careful when pulling images by short name
<table>
<tr>
  <td colspan="2"><a href="https://www.redhat.com/en/blog/be-careful-when-pulling-images-short-name">Be careful when pulling images by short name</a></td>
</tr>
<tr>
  <td><img src="https://www.redhat.com/profiles/rh/themes/redhatdotcom/img/red-hat-social-share.jpg"></td>
  <td>If you're pulling Linux container images by their "short name" you may be at risk. This post explains how to use the fully qualified name to get the images you need.</td>
</tr>
</table>

image squattingというコンテナイメージの詐称テクニックの紹介。
これはPodManを使っていると起きる問題で、リポジトリ名を省略した場合のリポジトリ名が意図しないものとなってしまったり、typoにより意図しないものとなることを利用して、偽のコンテナイメージをpullさせるというものです。

省略した指定をやめる、リポジトリの補完リストを最低限のものにする、検証機能を有効にする、などの対策を紹介しています。

## Bottlerocket with Fork, Clone, Run! - A Container Optimized OS with a GitOps model
<table>
<tr>
  <td colspan="2"><a href="https://www.weave.works/blog/bottlerocket-with-fork-clone-run">Bottlerocket with Fork, Clone, Run! - A Container Optimized OS with a GitOps model</a></td>
</tr>
<tr>
  <td><img src="https://www.weave.works/assets/images/blt391a26e353c3007a/ForkCloneRun.png"></td>
  <td>Bottlerocket OS is a secure, fast and easy to manage, Linux-based operating system. With EKS as the cluster control plane, Bottlerocket instances join the cluster as workers. It also works out of the box with one of our GitOps models, Fork Clone Run.</td>
</tr>
</table>

AWSが発表したBottlerocket OSを使ったEKSクラスタを簡単に作るための方法を紹介
この方法でクラスタを作るとGitOpsに必要な設定も自動的に行われる。

Bottlercketを更新するにはnodeに専用のラベルをつけるだけで良い。

## Embrace and Replace: Migrating ZooKeeper into Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://product.hubspot.com/blog/zookeeper-to-kubernetes-migration">Embrace and Replace: Migrating ZooKeeper into Kubernetes</a></td>
</tr>
<tr>
  <td><img src="https://product.hubspot.com/hubfs/Zookeeper_Kebinger.png#keepProtocol"></td>
  <td>A look at how we recently migrated hundreds of ZooKeeper instances from individual server instances to Kubernetes without downtime. </td>
</tr>
</table>

ZooKeeperをKubernetes上にダウンタイムなく移行した記録。
図入りでわかりやすくマイグレーションの手順を紹介している。kubernetesならではの方法で、従来の方法よりも簡単に実施できそうにみえます。

## Useful Interactive Terminal and Graphical UI Tools for Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://www.virtuallyghetto.com/2020/04/useful-interactive-terminal-and-graphical-ui-tools-for-kubernetes.html">Useful Interactive Terminal and Graphical UI Tools for Kubernetes</a></td>
</tr>
<tr>
  <td><img src="https://www.virtuallyghetto.com/wp-content/uploads/2020/04/kubevious-0-1024x586.png"></td>
  <td>I recently ran an internal hands-on workshop where I demonstrated to our field, marketing, support and engineering on just how easy it is to deploy and manage Tanzu Kubernetes Grid (TKG) Clusters r…</td>
</tr>
</table>

Kubernetesの可視化ツールを紹介。

- [Octant](https://github.com/vmware-tanzu/octant)
- [Lens](https://github.com/lensapp/lens)
- [Kubeovius](https://github.com/kubevious/kubevious)
- [kubelive](https://github.com/ameerthehacker/kubelive)
- [K9s](https://github.com/derailed/k9s)

## Introducing Krustlet, the WebAssembly Kubelet
<table>
<tr>
  <td colspan="2"><a href="https://deislabs.io/posts/introducing-krustlet/">Introducing Krustlet, the WebAssembly Kubelet</a></td>
</tr>
<tr>
  <td><img src="https://deislabs.io//images/deislabs.svg"></td>
  <td>Announcing Krustlet</td>
</tr>
</table>

Rustで書かれWebAssemblyで動作する Kubeletである「[Krustlet](https://github.com/deislabs/krustlet)」の紹介。
Krustletはランタイムとして WASIを使うように作られており、KubernetesクラスタでWebAssemblyのワークロードをサポートできるようになります。

# The Editorial

## Kubernetes Podcast from Google: Episode 97 - Jaeger, with Yuri Shkuro
<table>
<tr>
  <td colspan="2"><a href="https://kubernetespodcast.com/episode/097-jaeger/">Kubernetes Podcast from Google: Episode 97 - Jaeger, with Yuri Shkuro</a></td>
</tr>
<tr>
  <td><img src="https://kubernetespodcast.com/_assets/images/Kubernetes-Podcast-Logo_1400x1400.png"></td>
  <td>Jaeger is a distributed tracing platform built at Uber, and open-sourced in 2016. It traces its evolution from a Google paper on distributed tracing, the OpenZipkin project, and the OpenTracing libraries. Yuri Shkuro, creator of Jaeger and author of "Mastering Distributed Tracing", joins Craig and Adam to tell the story, and explain the hows and whys of distributed tracing.</td>
</tr>
</table>

Kubernetes Podcast。今回はJaegerの話。ゲストはJaegerの作者であるYuri Shkuro.

## kubevious/kubevious
<table>
<tr>
  <td colspan="2"><a href="https://github.com/kubevious/kubevious">kubevious/kubevious</a></td>
</tr>
<tr>
  <td><img src="https://avatars3.githubusercontent.com/u/59004473?s=400&v=4"></td>
  <td>Kubevious project, application centric Kubernetes UI - kubevious/kubevious</td>
</tr>
</table>

Webブラウザで動作するKubernetesの可視化ツール

## Reliable, Self-Healing Kubernetes Explained - Kublr
<table>
<tr>
  <td colspan="2"><a href="https://kublr.com/blog/reliable-self-healing-kubernetes-explained/">Reliable, Self-Healing Kubernetes Explained - Kublr</a></td>
</tr>
<tr>
  <td><img src="https://kublr.com/wp-content/uploads/2020/04/AdobeStock_305060700.jpeg"></td>
  <td>While infrastructure provisioning and self-healing are key to HA reliable clusters, it’s still not standard in some of the most popular Kubernetes solutions</td>
</tr>
</table>

Kubernetesにおけるセルフヒーリングについて、アプリケーションレイヤー、Kubernetesコンポーネントレイヤー、インフラレイヤーの3つの種類があり、特にインフラレイヤーのセルフヒーリングについて考える必要があることを紹介している。

## Five years of Raspberry Pi clusters - Raspberry Pi
<table>
<tr>
  <td colspan="2"><a href="https://www.raspberrypi.org/blog/five-years-of-raspberry-pi-clusters/">Five years of Raspberry Pi clusters - Raspberry Pi</a></td>
</tr>
<tr>
  <td><img src="https://www.raspberrypi.org/app/uploads/2020/03/Cluster-birds-eye-image-500x375.jpeg"></td>
  <td>Our guest blogger Alex shares artefacts from their half-decade journey building clusters. Featuring video tutorials, magazine articles and helpful links.</td>
</tr>
</table>

Raspberry Piによる５年間運用しているクラスタの紹介。
リクエストが来たNodeのLEDを点灯させたり、するデモや、ここ５年間でのKubernetes, Raspberry Piの進化について紹介している。

## Kubernetes v1.18 advances Windows container support - Open Source Blog
<table>
<tr>
  <td colspan="2"><a href="https://cloudblogs.microsoft.com/opensource/2020/04/03/kubernetes-v1-18-advances-windows-container-support/">Kubernetes v1.18 advances Windows container support - Open Source Blog</a></td>
</tr>
<tr>
  <td><img src="https://cloudblogs.microsoft.com/uploads/prod/sites/37/2019/04/V_1O61BK.jpg"></td>
  <td>The Windows community in Kubernetes has been working on improvements that enable even more use cases with the release of Kubernetes v1.18.</td>
</tr>
</table>

Kubernetes 1.18にてWindowsサポートがより強化された事についての紹介。
CSI対応、 GMSA対応、 RunAsUsername、ContainerDの対応など。

## Is there a Helm and Operators showdown? - Open Source Blog
<table>
<tr>
  <td colspan="2"><a href="https://cloudblogs.microsoft.com/opensource/2020/04/02/when-to-use-helm-operators-kubernetes-ops/">Is there a Helm and Operators showdown? - Open Source Blog</a></td>
</tr>
<tr>
  <td><img src="https://cloudblogs.microsoft.com/uploads/prod/sites/37/2019/04/V_1O61BK.jpg"></td>
  <td>Helm is a package manager for Kubernetes. Operators are design-pattern-driven pieces of code that encapsulate knowledge for running an application. Yet, there are questions floating around about which one is “the winner.” </td>
</tr>
</table>

HelmとOperatorのどちらが良いのか？という質問についての回答記事。
まぁ、どちらかが、というよりは、それぞれの解決しようとしている問題が違うので、相互補完的に使っていくのが良さそうです。

## Why Linux containers are a CIO's best friend
<table>
<tr>
  <td colspan="2"><a href="https://www.ciodive.com/news/linux-containers-kubernetes/575506/">Why Linux containers are a CIO's best friend</a></td>
</tr>
<tr>
  <td><img src="https://www.ciodive.com/user_media/cache/ff/4c/ff4c649df8782fd9dbf75fd5df7e5cc2.jpg"></td>
  <td>Linux containers are, by their nature, agile. This is key to effectively maneuvering through and rising above any challenges — or opportunities — that come a business's way.</td>
</tr>
</table>

コンテナ技術が企業のビジネス戦略として取り組まれるほどに重要なものになってきているという話