KubeWeekly #156

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



# The Headline

## CNCF Survey: Cloud Usage in Asia Has Grown 135% Since March 2018 - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2018/11/13/cncf-survey-china-november-2018/">CNCF Survey: Cloud Usage in Asia Has Grown 135% Since March 2018 - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2018/11/Graph-1-EN.png"></td>
  <td>The bi-annual CNCF survey takes a pulse of the community to better understand the adoption of cloud native technologies. This is the second time CNCF has conducted its cloud native...</td>
</tr>
</table>

CNCFのサーベイのアジア版。2018/3の調査との比較

- コンテナを使っているか？使う予定があるか？
- どのコンテナオーケストレーションツールを使っているか？
- クラウドか、オンプレか？
- どこのManaged Kubernetesを利用しているか？
- クラスタ数
- チームや、アプリケーションごとにクラスタを分けるか？namespaceで分離するか？
- どんなツールを使用しているか？
- どうやって学んでいるか？

## KubeCon + CloudNativeCon Barcelona 2019 Call for Proposals (CFP) Is Open - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2018/11/16/kubecon-barcelona-2019-call-for-proposals-cfp-is-open/">KubeCon + CloudNativeCon Barcelona 2019 Call for Proposals (CFP) Is Open - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2018/11/Seattle.png"></td>
  <td>KubeCon + CloudNativeCon has expanded from its start with 500 attendees in 2015 to become one of the largest and most successful open source conferences ever. With that growth comes...</td>
</tr>
</table>

KubeCon + CloudNativeCon Barcelona 2019のCFPが出ています。

# The Technical

## Optimizing Cluster Resources for Kubernetes Team Development
<table>
<tr>
  <td colspan="2"><a href="https://www.weave.workshttps://www.weave.works/blog/optimizing-cluster-resources-for-kubernetes-team-development">Optimizing Cluster Resources for Kubernetes Team Development</a></td>
</tr>
<tr>
  <td><img src="https://www.weave.works/assets/images/blt5ecedc18090321ab/software-development.png"></td>
  <td>Find out how to organize your team for Kubernetes development. In this post we discuss: namespaces, RBAC, network policy and resource constraints and how to apply them to your development teams.</td>
</tr>
</table>

複数のチームで開発する時にKubernetesのクラスタを分けるべきかどうか？という話。
必ずしも分ける必要はないし、Namespace,RBAC,NetworkPolicy,Resource quotasなど様々な隔離の仕組みについての紹介。

## Deploying Spring Boot and MongoDB as Containers Using Kubernetes and Docker - DZone Cloud
<table>
<tr>
  <td colspan="2"><a href="https://dzone.com/articles/deploying-spring-boot-and-mongodb-as-containers-us-1">Deploying Spring Boot and MongoDB as Containers Using Kubernetes and Docker - DZone Cloud</a></td>
</tr>
<tr>
  <td><img src="https://dz2cdn2.dzone.com/storage/article-thumb/10655933-thumb.jpg"></td>
  <td>Take a look at how you can deploy Spring Boot and MongoDB applications and containerize them with Kubernetes and Docker and all you'll need to do it.</td>
</tr>
</table>

minikubeにSpring Bootで作ったアプリケーションとMongoDBをデプロイするチュートリアル。

## Sysdig | Falco 0.13.0 Released: Kubernetes Audit Events Support
<table>
<tr>
  <td colspan="2"><a href="https://sysdig.com/blog/falco-0-13-released-kubernetes-audit-support/">Sysdig | Falco 0.13.0 Released: Kubernetes Audit Events Support</a></td>
</tr>
<tr>
  <td></td>
  <td>Kubernetes audit logging logs actions in a Kubernetes cluster. Falco receives Kubernetes audit events & will alert on any abnormal activity.</td>
</tr>
</table>

Falcoの新バージョンの紹介。
システムコールの収集に加えて、KubernetesのAudit Eventsにも対応した。

## User Authentication and Authorization in Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://cloudyuga.guru/blog/kubernetes-online-meetup-nov18/">User Authentication and Authorization in Kubernetes</a></td>
</tr>
<tr>
  <td></td>
  <td>User Authentication and Authorization in Kubernetes - Kubernetes Online Meetup</td>
</tr>
</table>

Kubernetes/Cloud-Native Online Meetupの発表資料の紹介。Kuernetesの認証・認可機能に関する説明。

## How did that sidecar get there? – Dow Jones Tech – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/dowjones/how-did-that-sidecar-get-there-4dcd73f1a0a4">How did that sidecar get there? – Dow Jones Tech – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*_vtOu346JG2xWWrGAVG7XQ.jpeg"></td>
  <td>One way to automate and extend Kubernetes</td>
</tr>
</table>

istioなどがSideCarを注入している方法を調査し、nodeで簡単なMutatingWebhookを作ってデプロイするチュートリアル。

## Considerations with K8s NetworkPolicy – Sainsbury's Engineering – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/sainsburys-engineering/considerations-with-k8s-networkpolicy-cee7eacf5469">Considerations with K8s NetworkPolicy – Sainsbury's Engineering – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*UuqV1Aimz6NLcwgR.jpg"></td>
  <td>Our Kubernetes journey has been a fun one, but it hasn’t been without its twists. One of the best practices when deploying applications…</td>
</tr>
</table>

NetworkPolicyの使い方とハマりどころについての解説

- DNS解決ができなくなる
  - 明示的に Egressのポリシーで許可する
- GlobalなNetworkPolicyを書く方法がない
  - Calicoの独自ポリシーにはGlobalNetworkPolicyというのがある
- 複数のポリシーのマージの挙動に注意
  - 無指定の場合はうまく行くが、明示的に空を指定すると空のルールとのANDを取ってしまい意図した挙動にならない。

## Blue Green Deployment using Kubernetes – fazley kholil – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@devops.fazley.kholil/blue-green-deployment-using-kubernetes-3494b356549c">Blue Green Deployment using Kubernetes – fazley kholil – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*05ztfR8D9Mj00nEWkP_5_w.gif"></td>
  <td>What is Kubernetes</td>
</tr>
</table>

KubernetesのDeploymentとServiceを使ってBlueGreenデプロイを行う方法を紹介。
1%リリースなどはKubernetesだけでは難しいのでサービスメッシュなどもあるよと、最後に軽く触れている。

## Using Fission.io to serve Kubernetes-managed Minio objects
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@jmarhee/using-fission-io-to-serve-kubernetes-managed-minio-objects-b7c8dbdf693c">Using Fission.io to serve Kubernetes-managed Minio objects</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/fit/c/120/120/1*dhqDALAfzhpAAqRPqOaGZQ.jpeg"></td>
  <td>I created an app a while back that would randomly select a video object from the node filesystem (at the time, this was an NFS volume, and…</td>
</tr>
</table>

MinioというS3互換のオープンソースソフトウェアを利用し、動画ファイルを配信する方法と、Fission.ioからそれを利用する方法の紹介。

Fission.ioをよく理解できていないが、この方法ではクラスタ内DNSの名前でブラウザからアクセスすることになってしまいそうに見えるが、ちゃんと動くのかな・・？

## Cloud-Native Monitoring with Prometheus and Grafana
<table>
<tr>
  <td colspan="2"><a href="https://blog.kubernauts.io/cloud-native-monitoring-with-prometheus-and-grafana-9c8003ab9c7">Cloud-Native Monitoring with Prometheus and Grafana</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*XE0ObomSZ6cwRHKNZ751Vg.png"></td>
  <td>As per the latest change in trend to how applications were managed and deployed new technologies such as Docker and Kubernetes has emerged…</td>
</tr>
</table>

Prometheusの紹介。
普通のデプロイ方法から、PrometheusOperatorまで、ざっと紹介。

## JHipster microservices with Istio service mesh on Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@deepu105/jhipster-microservices-with-istio-service-mesh-on-kubernetes-a7d0158ba9a3">JHipster microservices with Istio service mesh on Kubernetes</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*sed7vszGYvi40oa1F7iVzg.png"></td>
  <td>Istio is the coolest kid on the DevOps and Cloud block now. For those of you who aren’t following close enough  —  Istio is a service mesh…</td>
</tr>
</table>

JHipsterというJavaのマイクロサービスフレームワークとIstioを組み合わせる話。
JHipsterのskaffold機能はIstioにも対応している。

# The Editorial

## KubeCon + CloudNativeCon China 2018 - YouTube
<table>
<tr>
  <td colspan="2"><a href="http://www.youtube.com/playlist?list=PLj6h78yzYM2OK087kzLgc4jTPVbZjuNfs">KubeCon + CloudNativeCon China 2018 - YouTube</a></td>
</tr>
<tr>
  <td><img src="https://i.ytimg.com/vi/34DtLud72bs/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLD3vWSdbdCfJ_GExt4tTKUKAF7Gqw"></td>
  <td></td>
</tr>
</table>

KubeCon + CloudNativeCon China 2018の動画一覧

## Kubernetes Docs Updates, International Edition
<table>
<tr>
  <td colspan="2"><a href="https://kubernetes.io/blog/2018/11/08/kubernetes-docs-updates-international-edition/">Kubernetes Docs Updates, International Edition</a></td>
</tr>
<tr>
  
  <td>Author: Zach Corleissen (Linux Foundation)
As a co-chair of SIG Docs, I’m excited to share that Kubernetes docs have a fully mature workflow for localization (l10n).
Abbreviations galore L10n is an abbreviation for localization.
I18n is an abbreviation for internationalization.
I18n is what you do to make l10n easier. L10n is a fuller, more comprehensive process than translation (t9n).
Why localization matters The goal of SIG Docs is to make Kubernetes easier to use for as many people as possible.</td>
</tr>
</table>

ドキュメントのローカライゼーション対応のフローが整ったよという話。

## 5 ways cloud computing will change in the next year
<table>
<tr>
  <td colspan="2"><a href="https://www.techrepublic.com/article/5-ways-cloud-computing-will-change-in-the-next-year/">5 ways cloud computing will change in the next year</a></td>
</tr>
<tr>
  <td><img src="https://tr4.cbsistatic.com/hub/i/r/2018/11/12/c2a74c24-3691-4cf1-b7f4-0dbc15fddaaf/thumbnail/770x578/b0631ba6ab45afe48cd1144a5433f128/cloud-comp.jpg"></td>
  <td>Increased enterprise cloud spending, containers, and SaaS-based apps are in the future of cloud computing, according to Forrester.</td>
</tr>
</table>

クラウドコンピューティングの今後について

## An Introduction to Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://cloud.netapp.com/blog/an-introduction-to-kubernetes">An Introduction to Kubernetes</a></td>
</tr>
<tr>
  <td><img src="https://cloud.netapp.com/hubfs/Kubernetes%20blog.png?t=1542855655299#keepProtocol"></td>
  <td>Learn about Kubernetes: the history of containers and container orchestration, the problems that Kubernetes solves, and some of the related terminology.</td>
</tr>
</table>

Kubernetesの紹介とNetApp向けのCSIプラグインTridentの紹介。

##  Why Kubeflow in your Infrastructure? 
<table>
<tr>
  <td colspan="2"><a href="None"> Why Kubeflow in your Infrastructure? </a></td>
</tr>
<tr>
  <td><img src="https://www.kubeflow.org//images/logo.svg"></td>
  <td>Answering the 'why' about Kubeflow in an organization's Infrastructure.</td>
</tr>
</table>

Kubeflowの何が良いか？を紹介する記事

## Introducing Multicluster-Service-Account
<table>
<tr>
  <td colspan="2"><a href="https://admiralty.io/blog/introducing-multicluster-service-account/">Introducing Multicluster-Service-Account</a></td>
</tr>
<tr>
  <td><img src="https://admiralty.io/static/bay-beach-boat-1536305-half-7891feae4af9f633123c562a8f0e50ca-5c762.jpg"></td>
  <td>Import and Automount Remote Kubernetes Service Accounts</td>
</tr>
</table>

[GitHub - admiraltyio/multicluster-service-account: Import and Automount Remote Kubernetes Service Accounts](https://github.com/admiraltyio/multicluster-service-account) の紹介。

別のクラスタのサービスアカウントを取り込む仕組み。AdmissionWebhookにも対応しており、PodにアノテーションをつけることでKubeconfigファイルとして自動的にマウントすることもできる。
Goのライブラリもあり、マルチクラスタに対して処理するアプリケーションを作る助けになる。

## Kubernetes in production vs. Kubernetes in development: 4 myths
<table>
<tr>
  <td colspan="2"><a href="https://enterprisersproject.com/article/2018/11/kubernetes-production-4-myths-debunked">Kubernetes in production vs. Kubernetes in development: 4 myths</a></td>
</tr>
<tr>
  <td><img src="https://enterprisersproject.com/sites/default/files/images/CIO%20Containers%20Ecosystem.png"></td>
  <td>IT teams tinkering with containers and Kubernetes can discover a steep learning curve when their local changes deploy to production. Here's what to know ahead of time.</td>
</tr>
</table>

開発環境と本番環境にまつわる4つの迷信。

- 開発環境でKubernetesを動かすことで運用を把握できる
- 開発環境においてもセキュリティや信頼性がある
- オーケストレーションによってスケーリングは容易に実施できる
- 環境が違ってもKubernetesは同じように振る舞う

などなど

## What does “App Modernization” Mean Anyway ? – Roland Barcia – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@rbarcia/what-does-app-modernization-mean-anyway-2c8dac94fd60">What does “App Modernization” Mean Anyway ? – Roland Barcia – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*hf__N_mt3zII2JyzPyUICA.png"></td>
  <td>Recently, I have been working with customers on “App Modernization.” This is the new emerging term focused around taking existing…</td>
</tr>
</table>

アプリケーションのモダン化とはどういうことか？
単にモダン化することが目的になってはいけない。ビジネスとしての目的により、迅速なリリースや、並行開発、柔軟なスケーリングが必要となった場合に実施すべきである。
またモダン化にも順序があり適切な順番で徐々に実施していくことで、効率よくビジネスに貢献できる。

それぞれのレイヤー(Kubernetes/Containers Foundation, DevOps Foundation, Application Modernization - Backend, Application Modernization - Frontend)ごとのモダン化の手順を示した図も紹介している

## Why Kubernetes is driving a groundswell in containerisation
<table>
<tr>
  <td colspan="2"><a href="https://www.computerweekly.com/news/252452580/Why-Kubernetes-is-driving-a-groundswell-in-containerisation">Why Kubernetes is driving a groundswell in containerisation</a></td>
</tr>
<tr>
  <td><img src="https://cdn.ttgtmedia.com/visuals/searchITOperations/it_systems_management/searchitoperations_article_018.jpg"></td>
  <td>Kubernetes is fast becoming a de facto standard, but CIOs may be unaware of its footprint in their businesses.</td>
</tr>
</table>

Kubernetesの現状を紹介。
KubeConからの引用が多く感じた。

## Optimize your clusters with the Descheduler for Kubernetes - JAXenter
<table>
<tr>
  <td colspan="2"><a href="https://jaxenter.com/optimize-clusters-descheduler-kubernetes-152158.html">Optimize your clusters with the Descheduler for Kubernetes - JAXenter</a></td>
</tr>
<tr>
  <td><img src="https://jaxenter.com/wp-content/uploads/2018/11/shutterstock_13112170.png"></td>
  <td>Time for some spring cleaning in your Kubernetes schedulers; the Descheduler is here to evict underperforming nodes and tidy up your messes.</td>
</tr>
</table>

descheduler（ [GitHub - kubernetes-incubator/descheduler: Descheduler for Kubernetes](https://github.com/kubernetes-incubator/descheduler#descheduler-for-kubernetes)　）の紹介。スケジューリングされてしまったPodを後から再度スケジューリングさせることができるコントローラの実装。

同じReplicaSetから生成されたPodが同居しないようにしたり、リソースを多く使用しているPodをリソースの空いているNodeに移動するようにしたり、Affinityに違反しているPodを移動させたりすることができる。