KubeWeekly #161

# KubeWeekly #161

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


# The Headlines

## How I passed the CKA (Certified Kubernetes Administrator) Exam
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/platformer-blog/how-i-passed-the-cka-certified-kubernetes-administrator-exam-8943aa24d71d">How I passed the CKA (Certified Kubernetes Administrator) Exam</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*A6Ka4665MBUJk44LBQHvKA.jpeg"></td>
  <td>I’m writing this post because, ever since I published my certificate on Linkedin, I have been getting a massive number of messages from…</td>
</tr>
</table>

CKAの勉強法。参考にすべき資料の紹介。
[kelseyhightower/kubernetes-the-hard-way](https://github.com/kelseyhightower/kubernetes-the-hard-way)　の紹介

試験中に [kubernetes.io](https://kubernetes.io/) だけじゃなくて [Discuss Kubernetes](https://discuss.kubernetes.io/)も見てよくなったのかな？

## Kubernetes Helm features I would wish to know from day one
<table>
<tr>
  <td colspan="2"><a href="https://jakubstransky.com/2019/01/24/kubernetes-helm-advanced-features/">Kubernetes Helm features I would wish to know from day one</a></td>
</tr>
<tr>
  <td><img src="https://jaksky.files.wordpress.com/2018/01/cropped-5_white_logo_on_black_97x911.png?w=91"></td>
  <td>Kubernetes Helm features I would wish to know from day one.</td>
</tr>
</table>

Helmの少しトリッキーな機能を紹介。

## Custom User Authentication in Istio – PlanGrid Technology – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/plangrid-technology/custom-user-authentication-in-istio-67c90458b093">Custom User Authentication in Istio – PlanGrid Technology – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*s6q6jfuF7Hwj_nU_"></td>
  <td>Construction has a productivity problem. PlanGrid’s mission is to solve this by giving our customers the tools they need to iterate on…</td>
</tr>
</table>

istioでGatewayからの通信を認証サービスに通して、認証が成功した通信に関して、その旨を示すヘッダを埋め込む方法。
istio1.0から使えるようになったEnvoyFilterの機能を使いLua言語で、ロジックを注入できる。

# The Technical

## Server Name Indication (SNI) and Ingress TLS in Kubernetes with Ambassador
<table>
<tr>
  <td colspan="2"><a href="https://itnext.io/server-name-indication-sni-and-ingress-tls-in-kubernetes-with-ambassador-d3d796835ebe">Server Name Indication (SNI) and Ingress TLS in Kubernetes with Ambassador</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*vSldRMNJpW5S4aLQ"></td>
  <td>The newly released open source Ambassador 0.50 API gateway adds support for Server Name Indication (SNI), a much-requested feature from…</td>
</tr>
</table>

Ambassadorで1つのIPアドレスで複数のSNIを利用できるようにする方法を紹介。
ServiceのAnnotationの中にYAMLを書くのが慣れない・・


## Keeping Secrets in an ASP.NET Kubernetes Application
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/google-cloud/keeping-secrets-in-an-asp-net-kubernetes-application-8e138e148ae6">Keeping Secrets in an ASP.NET Kubernetes Application</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*insiuL11UHciI0rrvFIMsQ.png"></td>
  <td>In an earlier story titled Keeping Secrets in ASP.NET’s appsettings.json, I demonstrated how to keep secrets in appsecrets.json using…</td>
</tr>
</table>

GKEのKMSをKubernetes上で動くASP.NETのアプリケーションから利用する方法の紹介。

## Securing Kubernetes Clusters with Istio and Auth0 – Auth0 – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@auth0/securing-kubernetes-clusters-with-istio-and-auth0-d888229176d1">Securing Kubernetes Clusters with Istio and Auth0 – Auth0 – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*Ot91sBWYGv_Gdp1_bOgdJA.png"></td>
  <td>TL;DR: In this article, you will learn how to secure a Kubernetes cluster (and the applications that run on it) with Istio and Auth0. You…</td>
</tr>
</table>

Istioと認証のSaaSであるAuth0を利用して、サービスにユーザ認証を実現する方法の紹介。

## Can Kubernetes Keep a Secret? It all depends what tool you're using • Soluto Engineering Blog
<table>
<tr>
  <td colspan="2"><a href="https://blog.solutotlv.com/can-kubernetes-keep-a-secret/">Can Kubernetes Keep a Secret? It all depends what tool you're using • Soluto Engineering Blog</a></td>
</tr>
<tr>
  <td><img src="https://blog.solutotlv.com/wp-content/uploads/2019/01/cover_Noa5.png"></td>
  <td>At Soluto, we have super-devs who have full ownership: from writing code to deploying it to monitoring. When we made the shift to Kubernetes, we wanted to keep our devs independent and put a lot of effort into allowing them to create services rapidly. It all worked like a charm – until they had to handle credentials. This challenge leads us to build Kamus – an open source, GitOps, zero trust, secrets solution for Kubernetes applications. Kamus allows you to...</td>
</tr>
</table>

[Soluto/kamus](https://github.com/Soluto/kamus) の紹介。
シークレット情報を安全に管理するための仕組み。
特定のServiceAccountのPodでないと解読できないように暗号化し、initContainersで復号化する。
違うPodからはSecretをマウントできても、中身を知ることができないというのがポイント。

## [PHP on Kubernetes: application logging via unix pipe](https://pracucci.com/php-on-kubernetes-application-logging-via-unix-pipe.html)

PHPのアプリケーションをコンテナで実行する場合、php-fpmでマルチプロセスでアプリケーションが動いている場合、ログの扱いをどうするかが悩ましい。

子プロセスのログの出力先を　php://stdoutにして、親プロセスのログに混ゼコム方法もあるが、この記事では、子プロセスは別のファイルにログを書き出すようにして、サイドカーでそのログをtailする方法を紹介している。

4KBを超える場合はファイルのロックをしないとおかしなことになるとのこと。

## Using Alterant to add Istio to your Kubernetes cluster
<table>
<tr>
  <td colspan="2"><a href="https://blog.cloud66.com/using-alterant-to-add-istio-to-your-kubernetes-cluster/">Using Alterant to add Istio to your Kubernetes cluster</a></td>
</tr>
<tr>
  <td><img src="https://blog.cloud66.com/content/images/2019/02/add-istio-to-kubernetes-cluster-with-cloud66-alterant-1.png"></td>
  <td>In microservices architecture, a Service Mesh is a set of components that act as an intermediary to intercept and redirect traffic between your services. This is useful in many scenarios from access authorization to support for canary releases, blue/green deployments and more. Istio is a service mesh that’s</td>
</tr>
</table>

[Alterant](https://help.cloud66.com/alterant/)を使ったistioのサイドカーインジェクション方法の紹介。
AlterantはJavaScriptでKubernetesのマニフェストを編集するツールのようです。

## Poseidon-Firmament Scheduler – Flow Network Graph Based Scheduler
<table>
<tr>
  <td colspan="2"><a href="https://kubernetes.io/blog/2019/02/06/poseidon-firmament-scheduler-flow-network-graph-based-scheduler/">Poseidon-Firmament Scheduler – Flow Network Graph Based Scheduler</a></td>
</tr>
<tr>
  <td><img src="https://d33wubrfki0l68.cloudfront.net/f47df6599c1bc34c203bdeb947437d5fd40f01d6/d77d3/images/blog/2019-02-03-poseidon-firmament-scheduler/example-of-a-flow-network.png"></td>
  <td>Authors: Deepak Vij (Huawei), Shivram Shrivastava (Huawei)
Introduction Cluster Management systems such as Mesos, Google Borg, Kubernetes etc. in a cloud scale datacenter environment (also termed as Datacenter-as-a-Computer or Warehouse-Scale Computing - WSC) typically manage application workloads by performing tasks such as tracking machine live-ness, starting, monitoring, terminating workloads and more importantly using a Cluster Scheduler to decide on workload placements.
A Cluster Scheduler essentially performs the scheduling of workloads to compute resources – combining the global placement of work across the WSC environment makes the “warehouse-scale computer” more efficient, increases utilization, and saves energy.</td>
</tr>
</table>

Poseidon-Firmament SchedulerというKubernetesのカスタムスケジューラの紹介
デフォルトのスケジューラより性能が良いらしい。

kubernetes.ioにもページが作られている。
[Poseidon-Firmament - An alternate scheduler - Kubernetes](https://kubernetes.io/docs/concepts/extend-kubernetes/poseidon-firmament-alternate-scheduler/)

## A Kubernetes Development Workflow for MacOS 💻 – Megan O’Keefe – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@mo_keefe/a-kubernetes-development-workflow-for-macos-8c41669a4518">A Kubernetes Development Workflow for MacOS 💻 – Megan O’Keefe – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*JSiYljTJt2LyffjZ9_Irag.png"></td>
  <td>tools and plugins that make my life better</td>
</tr>
</table>

MacOS上でKubernetesを扱うために便利なツール群の紹介。

## Ambassador: Building a Control Plane for an Envoy-Powered API Gateway on Kubernetes 
<table>
<tr>
  <td colspan="2"><a href="https://www.infoq.com/articles/ambassador-api-gateway-kubernetes">Ambassador: Building a Control Plane for an Envoy-Powered API Gateway on Kubernetes </a></td>
</tr>
<tr>
  <td><img src="https://res.infoq.com/articles/ambassador-api-gateway-kubernetes/en/headerimage/ambassador-api-gateway-kubernetes-1549375315157.jpg"></td>
  <td>This article provides an insight into the creation of the Ambassador open source API gateway for Kubernetes, and discusses the technical challenges and lessons learned from building a developer-focused control plane for managing ingress or "edge" traffic within microservice-based applications.</td>
</tr>
</table>

Ambassadorの新しいバージョンの紹介。
Envoyのv2設定を使うようになった。テストフレームワークKATというのを作った。などなど

## Hands on Knative — Part 1 – Google Cloud Platform - Community – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/google-cloud/hands-on-knative-part-1-f2d5ce89944e">Hands on Knative — Part 1 – Google Cloud Platform - Community – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*B6PXYFlpWOYNBDU-lpic4g.png"></td>
  <td>I’ve been looking into Knative recently. In this 3-part blog series, I want to explain my learnings and show some hands on examples from…</td>
</tr>
</table>


Knativeのハンズオン。この記事ではServingについて扱っている。

細かいチュートリアルの内容は[meteatamel/knative-tutorial](https://github.com/meteatamel/knative-tutorial) のリポジトリにまとまっている。

# The Editorial

## Docker and Kubernetes in high security environments
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@chrismessiah/docker-and-kubernetes-in-high-security-environments-d851645e8b99">Docker and Kubernetes in high security environments</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*c2HXMmSKX2u0N_WXqYfBgw.png"></td>
  <td>A case-study at the Swedish Police Authority</td>
</tr>
</table>

スウェーデンの警察庁でのKubernetesのKubernetes導入事例の論文のサマリ。
セキュリティ要件の厳しいPodはそれだけを動かすNodeにスケジュールされるように、など、スケジューリングを工夫する方法を紹介している。
これで少なくともVMと同等のisolationを実現できる。
論文にはネットワークの隔離の話も書かれているらしい。

## Understanding Kubernetes Cluster Autoscaling – kubecost – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/kubecost/understanding-kubernetes-cluster-autoscaling-675099a1db92">Understanding Kubernetes Cluster Autoscaling – kubecost – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*CyQVykoco5oiVlGP"></td>
  <td>One of the great promises of using Kubernetes is that it has the ability to scale your infrastructure dynamically based on user demand…</td>
</tr>
</table>

Cluster Autoscalerの説明。
また使うときの注意事項。

## Bose and Kubernetes [LWN.net]
<table>
<tr>
  <td colspan="2"><a href="https://lwn.net/Articles/775238/">Bose and Kubernetes [LWN.net]</a></td>
</tr>
<tr>
  <td><img src="https://static.lwn.net/images/logo/barepenguin-70.png"></td>
</tr>
</table>

BoseでのKubernetesの導入事例。
Alexsaに指示を出すとスピーカから音楽を流す仕組みを作る際のストリーミングサーバの基盤としてKuberntesを選択した話。
分散MQTTソリューションであるVerneMQを利用した。
負荷テストにはLocustを使った。
700,000の並列コネクションで頭打ちになった。これはKubernetesのServiceを使ってNATをしていることが原因となった。
Serviceを使わなくすることで 1.1 million connectionsを実現した。
リトライを実装すると1.5 million connectionsを実現、ErlangのスケジューラのCPU使用率が100%となった。Erlangの設定を変更して、より多くのCPUコアを使うようにした。
最終的に4.85 million connectionsを実現した。

## Feedback and Control - an Essential GitOps Component
<table>
<tr>
  <td colspan="2"><a href="https://www.weave.works">Feedback and Control - an Essential GitOps Component</a></td>
</tr>
<tr>
  <td><img src="https://www.weave.works/assets/images/bltbb83a6e767436087/real-time-observability.png"></td>
  <td>What do we mean by a feedback and control loop? Find out how built-in observability is essential to GitOps.</td>
</tr>
</table>

GitOpsを実現する上で大切なFeedbackとControlについて説明。

## Welcoming Heptio Open Source Projects to VMware - Cloud Native Apps
<table>
<tr>
  <td colspan="2"><a href="https://blogs.vmware.com/cloudnative/2019/02/05/welcoming-heptio-open-source-projects-to-vmware/">Welcoming Heptio Open Source Projects to VMware - Cloud Native Apps</a></td>
</tr>
<tr>
  <td><img src="https://blogs.vmware.com/cloudnative/files/2019/02/Logos-3-modified.png"></td>
  <td>By Ross Kukulinski, Product Line Manager, and Tim Hinderliter, Senior Engineering Manager   Heptio is now VMware (read the acquisition close post), and as you can imagine, the last two months have been a whirlwind. Our newly combined team is eager to expand the impact Heptio’s open source projects have on the cloud native ecosystem through open</td>
</tr>
</table>

VMWareがHeptioを買収したので、VMWareのブログでHeptio製品を紹介している。また、このタイミングで名前が変わったプロダクトもある。（Heptio Ark -> Veleroなど）
またKsonnetは開発を終了することがアナウンスされている。

## O’Reilly Publishes “The State of Microservices Maturity” Report 
<table>
<tr>
  <td colspan="2"><a href="https://www.infoq.com/news/2019/02/Oreilly-microservices-maturity">O’Reilly Publishes “The State of Microservices Maturity” Report </a></td>
</tr>
<tr>
  <td><img src="https://cdn.infoq.com/statics_s2_20190205-0302/styles/i/logo-big.jpg"></td>
  <td>Microservices are evolving from fad to trend, according to “The State of Microservices Maturity” survey, published by O’Reilly. The report showed an overall positive attitude towards microservices among practitioners surveyed. One significant finding is that DevOps and microservices feed off each other, so that the success of one contributes heavily to the success of the other.</td>
</tr>
</table>

オライリーの"The State of Microservices Maturity"の概要の紹介。
マイクロサービス化が進行しているといったことや、Kubernetesはまだそこまで浸透していないといったことに触れられている。

## 12 ways to get smarter about Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://enterprisersproject.com/article/2019/2/kubernetes-12-ways-get-smarter">12 ways to get smarter about Kubernetes</a></td>
</tr>
<tr>
  <td><img src="https://enterprisersproject.com/sites/default/files/images/CIO_DigitalTools.png"></td>
  <td>Let’s boost your Kubernetes IQ, whether you’re an IT leader or working your way up. Check out these excellent Kubernetes resources.</td>
</tr>
</table>

Kubernetesの知識を高めるための12の方法
読み物や、PodCastの紹介

## How Uber Monitors 4,000 Microservices - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2019/02/05/how-uber-monitors-4000-microservices/">How Uber Monitors 4,000 Microservices - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2019/02/CaseStudy_uber_banner1-1024x410.jpg"></td>
  <td>With 4,000 proprietary microservices and a growing number of open source systems that needed to be monitored, by late 2014 Uber was outgrowing its usage of Graphite and Nagios for...</td>
</tr>
</table>

Uberではどうやって4000ものマイクロサービスをモニタリングしているのか？
PrometheusとUberが作ったオープンソースのPrometheusの外部ストレージであるM3を活用している話。

全文はこちら。
[Uber Case Study - Cloud Native Computing Foundation](https://www.cncf.io/uber-case-study/)

## Kubernetes Failure Stories, with Henning Jacobs

<table>
<tr>
  <td colspan="2"><a href="https://kubernetespodcast.com/episode/038-kubernetes-failure-stories/">Kubernetes Podcast from Google</a></td>
</tr>
<tr>
  <td><img src="https://kubernetespodcast.com/_assets/images/Kubernetes-Podcast-Logo_1400x1400.png"></td>
</tr>
</table>

Kubernete Podcast
（聞いてない）

https://github.com/hjacobs/kubernetes-failure-stories の話のようだ

## Kubernetes at Earnest – Engineering at Earnest – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/earnest-engineering/kubernetes-at-earnest-984293e7e88c">Kubernetes at Earnest – Engineering at Earnest – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*1HMU_sNUyGm0w9EEfV-4lA.png"></td>
  <td>When I started down the path of writing this post about Kubernetes at Earnest I quickly realized that it was a rather large topic. There…</td>
</tr>
</table>

本番でKubernetesを運用する際に重要となるManifestのTipsを紹介