KubeWeekly #165

# はじめに

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

# The Headlines

## The What and the Why of the Cluster API - Cloud Native Apps
<table>
<tr>
  <td colspan="2"><a href="https://blogs.vmware.com/cloudnative/2019/03/14/what-and-why-of-cluster-api/">The What and the Why of the Cluster API - Cloud Native Apps</a></td>
</tr>
<tr>
  <td><img src="https://blogs.vmware.com/cloudnative/files/2019/03/Untitled-design-4.png"></td>
  <td>In this post, we will outline the history and motivations behind the creation of the Cluster API as a specialized toolset to bring declarative, Kubernetes-style APIs to cluster creation, configuration, and management in the Kubernetes ecosystem.</td>
</tr>
</table>

Cluster APIが必要となった背景と、目的、目的としていないこと、現在の状況について。

最初のリリースであるv1alpha1が2019年3月末に出るらしい。（もう出てる？）

## KubeEdge, a Kubernetes Native Edge Computing Framework
<table>
<tr>
  <td colspan="2"><a href="https://kubernetes.io/blog/2019/03/19/kubeedge-k8s-based-edge-intro/">KubeEdge, a Kubernetes Native Edge Computing Framework</a></td>
</tr>
<tr>
  <td><img src="https://kubernetes.io//images/blog/2019-03-12-kubeedge-k8s-based-edge-intro/kubeedge-logo.png"></td>
  <td>Author: Sanil Kumar D (Huawei), Jun Du(Huawei)
KubeEdge becomes the first Kubernetes Native Edge Computing Platform with both Edge and Cloud components open sourced! Open source edge computing is going through its most dynamic phase of development in the industry. So many open source platforms, so many consolidations and so many initiatives for standardization! This shows the strong drive to build better platforms to bring cloud computing to the edges to meet ever increasing demand.</td>
</tr>
</table>

KubeEdgeの紹介
3/5に0.2がリリースされ、クラウド側の実装もオープンソースとなった。（0.2ではEdge側の実装のみだった）
このブログではKubeEdgeの各コンポーネントの簡単な紹介と概要図が示されている。

## Kubernetes Setup Using Ansible and Vagrant
<table>
<tr>
  <td colspan="2"><a href="https://kubernetes.io/blog/2019/03/15/kubernetes-setup-using-ansible-and-vagrant/">Kubernetes Setup Using Ansible and Vagrant</a></td>
</tr>
<tr>
  
  <td>Author: Naresh L J (Infosys)
Objective This blog post describes the steps required to setup a multi node Kubernetes cluster for development purposes. This setup provides a production-like cluster that can be setup on your local machine.
Why do we require multi node cluster setup? Multi node Kubernetes clusters offer a production-like environment which has various advantages. Even though Minikube provides an excellent platform for getting started, it doesn’t provide the opportunity to work with multi node clusters which can help solve problems or bugs that are related to application design and architecture.</td>
</tr>
</table>

VagrantとAnsibleを使ってローカル環境にマルチノードのKubernetesクラスタの構築方法を紹介。

# The Technical

## Running Kubernetes In The CI Pipeline For Integration and End-To-End Tests
<table>
<tr>
  <td colspan="2"><a href="https://www.loodse.com/blog/2019-03-12-running-kubernetes-in-the-ci-pipeline-/">Running Kubernetes In The CI Pipeline For Integration and End-To-End Tests</a></td>
</tr>
<tr>
  <td><img src="https://www.loodse.com/images/blog/2019-03-12/blog-post-logo.png"></td>
  <td>

Ensuring your Kubernetes component, such as a controller or an operator, works correctly is an important step before merging a pull request or …</td>
</tr>
</table>

CIパイプラインの中でKubernetesクラスタを利用する方法として[kind](https://github.com/kubernetes-sigs/kind)を紹介している。
この内容はKubeCon2018シアトルでの発表のサマリのようなものらしい。

kubeadmやminikube (`--vm-driver=none`)では、一般的なCIパイプラインでは権限の問題で使えないことが多いが、kindはDockerコンテナとしてKubernetesを立ち上げるため、比較的簡単に利用できるようだ。

実際の例としてTravis-CIでの利用方法を紹介している。


## Running a Tight Ship: Deploying Kubernetes to Run Windows Containers
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/outsystems-engineering/running-a-tight-ship-deploying-kubernetes-on-a-windows-server-429c9b4e6c3e">Running a Tight Ship: Deploying Kubernetes to Run Windows Containers</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*L5rOACsabIeU6aNKjpizmA@2x.png"></td>
  <td>With OutSystems 11 we brought containers to low-code and changed how applications are packed, shipped, and run.</td>
</tr>
</table>

KubernetesのWindows ServerのWorkerにてWindowsコンテナを動作させる方法を紹介。

masterセットアップ時にはWindows workerではkube-proxyやflannelを動かないようにする必要がある。
またWindowsのWorkerを作る際には、Windows用のpauseの用意や、Windows用のflannelバイナリの実行が必要となる。

## Routing in a Multi-Platform Data Center: From VMs to Kubernetes, via Ambassador
<table>
<tr>
  <td colspan="2"><a href="https://blog.getambassador.io/routing-in-a-multi-platform-data-center-from-vms-to-kubernetes-via-ambassador-47bbe658683c">Routing in a Multi-Platform Data Center: From VMs to Kubernetes, via Ambassador</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*N3rzMF2wZJqHPzeP"></td>
  <td>At Datawire, we are seeing more organizations migrating to their “next-generation” cloud-native platform built around Docker and…</td>
</tr>
</table>

[KubeWeekly ＃164](https://qiita.com/inajob/items/bcc9ef9222aa5e5f7af6#routing-in-a-multi-platform-data-center-from-vms-to-kubernetes-via-ambassador)にて紹介済み

## Creating a Kubernetes Cluster with Digital Ocean and Terraform
<table>
<tr>
  <td colspan="2"><a href="https://ponderosa.io/blog/kubernetes/2019/03/13/terraform-cluster-create/">Creating a Kubernetes Cluster with Digital Ocean and Terraform</a></td>
</tr>
<tr>
  <td><img src="https://ponderosa.io/blog/assets/ponderosa-share.png"></td>
  <td>The blog of Ponderosa.io</td>
</tr>
</table>

TerraformでDigitalOceanのVPSを操作してKubernetesクラスタを作成する方法を紹介。

それ専用のリソースがあるようだ。[DigitalOcean: digitalocean_kubernetes_cluster - Terraform by HashiCorp](https://www.terraform.io/docs/providers/do/r/kubernetes_cluster.html)

## How to deploy NuoDB on Kubernetes with OpenEBS
<table>
<tr>
  <td colspan="2"><a href="https://blog.openebs.io/how-to-deploy-nuodb-on-kubernetes-with-openebs-6e15d4064db5">How to deploy NuoDB on Kubernetes with OpenEBS</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*lQzxj0rx5WUBhinV2oaMsQ.jpeg"></td>
  <td>NuoDB is an elastic SQL database designed with distributed application deployment challenges in mind. The NuoDB database is SQL compliant…</td>
</tr>
</table>

NuoDBというデータベースをOpenEBSで作ったストレージの上に構築する方法の紹介。
NuoDBのCommunity Editionは構成に制約があるらしい。より自由な構成にするためにはEnterprize editionが必要とのこと。

実際の例としてOpenShift上にOpenEBS,NuoDBをデプロイする例を紹介している。

## gRPC Load Balancing inside Kubernetes · Fabrice Aneche
<table>
<tr>
  <td colspan="2"><a href="https://blog.nobugware.com/post/2019/kubernetes_mesh_network_load_balancing_grpc_services/">gRPC Load Balancing inside Kubernetes · Fabrice Aneche</a></td>
</tr>
<tr>
  
  <td>gRPC Load Balancing inside Kubernetes</td>
</tr>
</table>

HTTP/2ベースのgRPCなどにおいてはTCP接続を使い回すため、接続時にロードバランシングをしても結果的にトラフィックが偏ってしまうことが起きやすい。
L4ロードバランサではなくL7ロードバランサを利用という手があるこれによりバックエンドのPodを透過的に切り替えることも可能となる。
クラスタ内のマイクロサービスのロードバランシングの方法としては、サービスメッシュを使う方法もあるが、headless serviceとしてAPIを公開し、GoのGRPCライブラリのクライアントロードバランスの機能を利用することもできる。その場合リフレッシュのタイミングが長すぎるのでカスタマイズする必要がある。

[sercand/kuberesolver](https://github.com/sercand/kuberesolver)をつかうとDNSではなくKubernetesのAPIを介してサービスディスカバリを行うこともできる。

## Kubernetes Auditing - InfraCloud - Foundation. Solidified.
<table>
<tr>
  <td colspan="2"><a href="https://www.infracloud.io/kubernetes-auditing/">Kubernetes Auditing - InfraCloud - Foundation. Solidified.</a></td>
</tr>
<tr>
  <td><img src="https://www.infracloud.io/wp-content/uploads/2019/02/pexels-photo-247781.jpeg"></td>
  <td>Getting Kubernetes auditing right is an important part of a secure and scalable enterprise grade Kubernetes setup!</td>
</tr>
</table>

KubernetesのAudit logging機能の紹介。
Policyの設定方法と、実際にユーザをつくってみて、そのAudit Logをfluentdで転送しKibanaで可視化するという方法のチュートリアル。


## CI/CD for Knative serverless apps on Kubernetes with Concourse
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/aptomi/ci-cd-for-knative-serverless-apps-on-kubernetes-with-concourse-54bafef51767">CI/CD for Knative serverless apps on Kubernetes with Concourse</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*4Ss_PqP66l4VKryRlt9XZw.png"></td>
  <td>This post describes how to deploy and update scale-to-zero REST API service on Kubernetes with Concourse CI/CD pipelines.</td>
</tr>
</table>

Knativeを使ったサーバレスアプリをConcourceでCI/CDする方法について、
[Aptomi/concourse-knative-serving-resource](https://github.com/Aptomi/concourse-knative-serving-resource) というConcourceのプラグインを利用している。
Dockerイメージの更新を検知してKnativeのServiceを書き換えることによりCDを実現する例を紹介している。

## Intro to Kops: Kubernetes Operations & How to Get Started Managing Kubernetes in Production
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/devopslinks/intro-to-kops-kubernetes-operations-how-to-get-started-managing-kubernetes-in-production-4bdb23f019b6">Intro to Kops: Kubernetes Operations & How to Get Started Managing Kubernetes in Production</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*NcphW9pL31JRnmnS3HkYjQ.jpeg"></td>
  <td>Firstly, what is Kops? Kubernetes Operations is the most popular way to you create, destroy, upgrade and maintain Kubernetes in production</td>
</tr>
</table>

Kopsの機能紹介と、インストール方法について。

# Tooling Spotlight

## admiraltyio/multicluster-scheduler
<table>
<tr>
  <td colspan="2"><a href="https://github.com/admiraltyio/multicluster-scheduler">admiraltyio/multicluster-scheduler</a></td>
</tr>
<tr>
  <td><img src="https://avatars3.githubusercontent.com/u/40004716?s=400&v=4"></td>
  <td>A system of Kubernetes controllers that intelligently schedules workloads across clusters. - admiraltyio/multicluster-scheduler</td>
</tr>
</table>

[KubeWeekly ＃160](https://qiita.com/inajob/items/0720b23073b3fdd00ab2#running-argo-workflows-across-multiple-kubernetes-clusters)で紹介のあった、federationとは違う形のマルチクラスタ対応スケジューラ。
以前の記事からバージョンが上がっている。

# The Editorial

## A Look Back and What's in Store for Kubernetes Contributor Summits
<table>
<tr>
  <td colspan="2"><a href="https://kubernetes.io/blog/2019/03/20/a-look-back-and-whats-in-store-for-kubernetes-contributor-summits/">A Look Back and What's in Store for Kubernetes Contributor Summits</a></td>
</tr>
<tr>
  <td>Authors: Paris Pittman (Google), Jonas Rosland (VMware)
tl;dr - click here for Barcelona Contributor Summit information.
  Seattle Contributor Summit
  As our contributing community grows in great numbers, with more than 16,000 contributors this year across 150+ GitHub repositories, it’s important to provide face to face connections for our large distributed teams to have opportunities for collaboration and learning. In Contributor Experience, our methodology with planning events is a lot like our documentation; we build from personas – interests, skills, and motivators to name a few.</td>
</tr>
</table>

Kubernetes Contributor Summitsの様子について。過去の様子と、次の開催日程の紹介。

CNCFのストアの紹介 [Kubernetes – CNCF Store | Get stickers, t-shirts, hoodies, and more](https://store.cncf.io/collections/kubernetes)

## Inside Kubernetes RBAC
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@dominik.tornow/inside-kubernetes-rbac-9988b08a738a">Inside Kubernetes RBAC</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*qsSaPjy8cC6eclwpGXavug.png"></td>
  <td>By Andrew Chen and Dominik Tornow</td>
</tr>
</table>

Kubernetesの認可の仕組みであるRBACについての概要を紹介。
集合論的な記号や、それぞれの権限を表にまとめるなど、その界隈の方にはわかりやすい説明、、なのかな？

## How A Cryptocurrency Miner Made Its Way onto Our Internal Kubernetes Clusters
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/jw-player-engineering/how-a-cryptocurrency-miner-made-its-way-onto-our-internal-kubernetes-clusters-9b09c4704205">How A Cryptocurrency Miner Made Its Way onto Our Internal Kubernetes Clusters</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*MZ69ynG90kkTY2UwqymB2A.png"></td>
  <td>Discovery</td>
</tr>
</table>

実際に開発クラスタに意図しない仮想通貨採掘プログラムが動いていた話の紹介。
時系列で起きたことが記載されており、実際の現場の雰囲気を感じることができる。

根本原因はWeave Scopeという管理ツールのUIがLBを通じてインターネットに公開されていたことによるものらしい。
WeaveScopeのデプロイ時にtype=Loadbalancerを設定してしまっていたことと、KubernetesのAWS連携によりそのロードバランサのセキュリティグループがインターネットにさらされたことが重なり、意図しない公開に至ってしまったようだ。

マイナーはgccという名前で偽装されており、側から見ると全台でgccがCPUを消費しているように見えていたとのこと。

## Kubernetes - the Fast and Furious?
<table>
<tr>
  <td colspan="2"><a href="https://www.weave.works/blog/kubernetes-the-fast-and-furious">Kubernetes - the Fast and Furious?</a></td>
</tr>
<tr>
  <td><img src="https://www.weave.works/assets/images/blt19a9dd91b0b4117a/cncf-stats.png"></td>
  <td>Cloud native is the bridge between enterprise and the cloud.  Learn the benefits of adopting cloud native technology and strategies for enterprises.</td>
</tr>
</table>

CNCFの紹介

## NetEase’s System Supports 30,000 Nodes in a Single Cluster - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2019/03/14/neteases-system-supports-30000-nodes-in-a-single-cluster/">NetEase’s System Supports 30,000 Nodes in a Single Cluster - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2019/03/Netease-feature-image-300x157.jpg"></td>
  <td>Not only is NetEase the fifth largest gaming company in the world, they also operate e-commerce, advertising, music streaming, online education, and email platforms throughout China. With that kind of...</td>
</tr>
</table>

30,000nodeのクラスタを構築した事例の紹介。

実際の記事はこちら　[NetEase Case Study - Kubernetes](https://kubernetes.io/case-studies/netease/)


## Kubernetes’ Push to the Edge Shows Innovation, Challenges - SDxCe
<table>
<tr>
  <td colspan="2"><a href="https://www.sdxcentral.com/articles/news/kubernetes-push-to-the-edge-shows-innovation-challenges/2019/03/">Kubernetes’ Push to the Edge Shows Innovation, Challenges - SDxCe</a></td>
</tr>
<tr>
  <td><img src="https://www.sdxcentral.com/wp-content/uploads/2019/03/Kubernetes’-Push-to-the-Edge-Shows-Innovation-Challenges.jpg"></td>
  <td>Kubernetes continues to proliferate across the cloud ecosystem, but the rush to the edge is showing innovation and challenges.</td>
</tr>
</table>

Kubernetesとエッジコンピューティングについて。
k3sの紹介や、各社の事例、CNCFのIoT Edge Working Groupについて紹介している。

またKubernetesの頻繁なバージョンアップが特にEdge環境への導入の課題となっていると述べられている。

## Multiple stages within a Kubernetes cluster - JAXenter
<table>
<tr>
  <td colspan="2"><a href="https://jaxenter.com/multiple-stages-within-kubernetes-cluster-157036.html">Multiple stages within a Kubernetes cluster - JAXenter</a></td>
</tr>
<tr>
  <td><img src="https://jaxenter.com/wp-content/uploads/2019/03/shutterstock_666928378-1.jpg"></td>
  <td>Learn how to create isolated stages within a Kubernetes-cluster! Michael Frembs also discusses the advantages and disadvantages of multiple stages.</td>
</tr>
</table>

Kubernetesクラスタを何個用意したら良いか？という疑問に答える記事。

1つのKubernetes上でのリソースのisolationを高める方法として、Namespace、Nodeを分ける方法や、NetworkPolicyを紹介している。
その上で、Prod-stageを同一のクラスタとし、devを別のクラスタとして用意する方法を推奨している。

## Kubernetes: piloting the cybernetic dreamboat
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/yld-engineering-blog/kubernetes-piloting-the-cybernetic-dreamboat-98482f49333b">Kubernetes: piloting the cybernetic dreamboat</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*ZnrUXSGpWapdVJOn.gif"></td>
  <td>The name Kubernetes originates from Greek, meaning helmsman or pilot, and is the root of governor and cybernetic.</td>
</tr>
</table>

[KubeWeekly #163](https://qiita.com/inajob/private/a74813cb83b0c48e2555#kubernetes-piloting-the-cybernetic-dreamboat--yld-blog--medium)にて紹介している


## The Missing Introduction To Containerization
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/devopslinks/the-missing-introduction-to-containerization-de1fbb73efc5">The Missing Introduction To Containerization</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*D6D2UV47p42ACOnu"></td>
  <td>During the last four years from 2015 to 2019, cloud and distributed computing were one of the most in-demand skills. They graduated from a…</td>
</tr>
</table>

コンテナの歴史から始まり、各種標準化や、現在利用できる様々なコンテナランタイムの役割をデモとイラストを交えながらわかりやすく紹介している。

## OperatorHub.io, a Public Registry for Kubernetes Operators 
<table>
<tr>
  <td colspan="2"><a href="https://www.infoq.com/news/2019/03/redhat-operatorshub-io">OperatorHub.io, a Public Registry for Kubernetes Operators </a></td>
</tr>
<tr>
  <td><img src="https://cdn.infoq.com/statics_s1_20190326-0412-1/styles/i/logo-big.jpg"></td>
  <td>Red Hat, in collaboration with Microsoft, Google Cloud, and Amazon Web Services, recently launched OperatorHub.io. OperatorHub.io is designed as a public registry for finding services backed by Kubernetes Operators.</td>
</tr>
</table>

[OperatorHub.io](https://operatorhub.io/)の紹介。
Operatorとは何か、Operator Frameworkの紹介。