KubeWeekly #180

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

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


# The Headlines

## 2019 CNCF Cloud Native Survey Call to Participate - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2019/08/08/2019-cncf-cloud-native-survey-call-to-participate/">2019 CNCF Cloud Native Survey Call to Participate - 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>It’s time for the CNCF Cloud Native Survey! The goal of this survey, which will be issued in advance of KubeCon + CloudNativeCon North America (November 18-21, 2019), is to...</td>
</tr>
</table>

第7回目のCNCFのサーベイ協力のお願い。
例年からいくつかの質問を増やしたらしい。抽選で3名様にアマゾンギフトカードが当たるらしい。

## Announcing Kubernetes Forum Seoul and Sydney: Expanding Cloud Native Engagement Across the Globe - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2019/07/31/announcing-kubernetes-forum-seoul-and-sydney-expanding-cloud-native-engagement-across-the-globe/">Announcing Kubernetes Forum Seoul and Sydney: Expanding Cloud Native Engagement Across the Globe - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2019/07/Screen-Shot-2019-08-07-at-5.08.42-PM-300x135.png"></td>
  <td>  Today we’re excited to announce the first two Kubernetes Forums in Seoul and Sydney, which we are launching this December in Seoul, South Korea from December 9-10, and Sydney,...</td>
</tr>
</table>

Kubernetesフォーラム ソウル・シドニーの開催のお知らせ。
フォーラムという形式での実施は初めて。小規模なカンファレンスのようです。
2020年の開催予定場所にはTokyoの文字も見える

# The Technical

## vmware/octant
<table>
<tr>
  <td colspan="2"><a href="https://github.com/vmware/octant">vmware/octant</a></td>
</tr>
<tr>
  <td><img src="https://avatars2.githubusercontent.com/u/473334?s=400&v=4"></td>
  <td>A web-based, highly extensible platform for developers to better understand the complexity of Kubernetes clusters. - vmware/octant</td>
</tr>
</table>

Kubernetesクラスタのダッシュボード。
リソースの依存関係などをわかりやすく図示してくれたり、ログを確認したりなど便利そうなツール。

## Running Spark with Jupyter Notebook & HDFS on Kubernetes - Kublr
<table>
<tr>
  <td colspan="2"><a href="https://kublr.com/blog/running-spark-with-jupyter-notebook-hdfs-on-kubernetes/">Running Spark with Jupyter Notebook & HDFS on Kubernetes - Kublr</a></td>
</tr>
<tr>
  <td><img src="https://kublr.com/wp-content/uploads/2019/07/Running-Spark-with-Jupyter-Notebook-HDFS-on-Kubernetes.gif"></td>
  <td>Setup and configure a Kubernetes cluster for dynamic Spark workloads while reducing cost AND improving performance. How? Check out this tutorial.</td>
</tr>
</table>

KublrをつかってオートスケールするKubernetesのクラスタをAWS上に作成し、そこでHDFSとsparkとjupyternotebookを動かす方法を紹介。
大きなjobを実行するときだけクラスタを拡大するのでお財布にも優しい構成。

## Verifying Service Mesh TLS in Kubernetes, Using ksniff and Wireshark
<table>
<tr>
  <td colspan="2"><a href="https://blog.getambassador.io/verifying-service-mesh-tls-in-kubernetes-using-ksniff-and-wireshark-454b1e3f4dc9">Verifying Service Mesh TLS in Kubernetes, Using ksniff and Wireshark</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/1103/0*oHNxrC120Xdr-WdL"></td>
  <td>Alongside Nic Jackson from HashiCorp, I have recently presented at several conferences and webinars about the need for transport-level…</td>
</tr>
</table>

ksniffというツールを使って、Pod内のネットワークのパケットキャプチャを行う方法を紹介。
この手法を使い、AmbassadorとConsulを使った構成で、mtlsのあり、なしのそれぞれでパケットがどのように暗号化されているかを確認する方法を紹介している。

## knative/serving
<table>
<tr>
  <td colspan="2"><a href="https://github.com/knative/serving">knative/serving</a></td>
</tr>
<tr>
  <td><img src="https://avatars0.githubusercontent.com/u/35583233?s=400&v=4"></td>
  <td>Kubernetes-based, scale-to-zero, request-driven compute - knative/serving</td>
</tr>
</table>

Knative0.8がリリースされました。

## Docker and Kubernetes Reverse shells
<table>
<tr>
  <td colspan="2"><a href="https://raesene.github.io/blog/2019/08/09/docker-reverse-shells/">Docker and Kubernetes Reverse shells</a></td>
</tr>
</table>

reverse shellと呼ばれるテクニックをコンテナでも実施する方法を紹介。
要は/bin/shに対する入出力をリモートからも行えるようにするという方法。
デバッグなどで使えるかもしれない。

## Kubernetes Pentest Methodology Part 1 | CyberArk
<table>
<tr>
  <td colspan="2"><a href="https://www.cyberark.com/threat-research-blog/kubernetes-pentest-methodology-part-1/">Kubernetes Pentest Methodology Part 1 | CyberArk</a></td>
</tr>
<tr>
  <td><img src="https://www.cyberark.com/wp-content/uploads/2019/08/Container-Red-1024x697.jpg"></td>
  <td>As the pace of life accelerates, we spend less time waiting or in downtime.  Kubernetes offers something similar for our life with technology. It is a container orchestration platform that offers an easy, automated way...</td>
</tr>
</table>

KubernetesのRBACのまずい設定例とその設定をしていた時にどのようなリスクがあるかの紹介。
なんとなくまずそう、というだけでなく具体的な攻撃方法が紹介してあるので勉強になります。

- SecretのList
- PodのCreate（特にkube-systemへの）
- exec
- Rolebindingsの編集権限

などなど

## Netflix/security-bulletins
<table>
<tr>
  <td colspan="2"><a href="https://github.com/Netflix/security-bulletins">Netflix/security-bulletins</a></td>
</tr>
<tr>
  <td><img src="https://avatars1.githubusercontent.com/u/913567?s=400&v=4"></td>
  <td>Security Bulletins that relate to Netflix Open Source - Netflix/security-bulletins</td>
</tr>
</table>

NetflixがHTTP/2のDOS攻撃の可能性がある脆弱性について説明している

## Kubernetes Gated Deployments — GoDaddy Engineering Blog
<table>
<tr>
  <td colspan="2"><a href="https://godaddy.github.io/2019/08/13/kubernetes-gated-deployments/">Kubernetes Gated Deployments — GoDaddy Engineering Blog</a></td>
</tr>
<tr>
  <td>Kubernetes Gated Deployments is a Kubernetes controller that facilitates automatic regression testing and canary analysis on Kubernetes deployments. It is designed to augment existing deployment processes by analyzing key functionality and performance metrics associated with the application, and can detect and roll back changes if they cause undesirable behavior.</td>
</tr>
</table>

うまく動いていないとデプロイをロールバックするDeploymentの実装である[Kubernetes Gated Deployments](https://github.com/godaddy/kubernetes-gated-deployments)の紹介。
うまく動いているかどうかの判定はメトリクスなどにより行う。判定基準はプラグイン方式となっており、好きに実装できる。例としてはNerRelicで取得した特定のメトリクスを扱う例が紹介されている。

## zalando-incubator/kopf
<table>
<tr>
  <td colspan="2"><a href="https://github.com/zalando-incubator/kopf">zalando-incubator/kopf</a></td>
</tr>
<tr>
  <td><img src="https://avatars0.githubusercontent.com/u/18533786?s=400&v=4"></td>
  <td>A Python framework to write Kubernetes operators in just few lines of code. - zalando-incubator/kopf</td>
</tr>
</table>

Kubernetes Operator Pythonic Framework。
名前の通りPythonで簡単にKubernetesのOperatorを作るためのフレームワーク。

アノテーションにリソースの種類とイベント名を指定することで、イベントハンドラを定義するだけでOperatorを作ることができる。

## Writing a Kubernetes Operator in Python without frameworks and SDK
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/flant-com/kubernetes-operator-in-python-451f2d2e33f3">Writing a Kubernetes Operator in Python without frameworks and SDK</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/780/0*RmltMLuABAxqWwHV.png"></td>
  <td>Easy step-by-step guide to give it a try.</td>
</tr>
</table>

Pythonでフレームワークなどを使わずにKubernetesのオペレータを作る方法の紹介。
copy operatorという指定したセレクタのついたConfigMap/Secretを全てのNamespaceにコピーするというオペレータを作成している。

フレームワークは使っていないが、`import kubernetes`はしている。

## K8s scheduling — deep dive
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/@tsahiduek/k8s-infrastructure-what-you-should-consider-1c01a2109e82">K8s scheduling — deep dive</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/1200/1*s8b63x5Sy5fyDAzLKi-xXA.png"></td>
  <td>Kubernetes(AKA K8s), who've been around for the past 5 years, deliver a promise to free its users from dealing with infrastructure…</td>
</tr>
</table>

KubernetesでPodがどのようにスケジューリングされるかを、AZに指定がある場合や、AZ制限がついたPVCをマウントしている場合など、いくつかの例を用いて紹介している。

# The Editorial

## Building a Kubernetes platform at Pinterest
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/pinterest-engineering/building-a-kubernetes-platform-at-pinterest-fb3d9571c948">Building a Kubernetes platform at Pinterest</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/1200/0*Fdv1SVrb7FKgar-B"></td>
  <td>Lida Li, June Liu, Rodrigo Menezes, Suli Xu, Harry Zhang, Roberto Rodriguez Alcala | Pinterest Software Engineers, Cloud Management…</td>
</tr>
</table>

PinterestでのKubernetesの導入事例
生のKubernetesのリソースを使うのは、学習コストなどがかかるため、CRDとコントローラを使い、独自の`PinterestService`などというものを作っているそうだ。
このCRDを元にinitContainerやsidecarなどを追加しアプリケーションを組み立てるようになっている。

mTLSやデプロイの仕組みの構築など、かなりがっつりとKubernetesを利用している事例だと感じた。

## The Evolution of Istio's APIs
<table>
<tr>
  <td colspan="2"><a href="https://istio.io/blog/2019/evolving-istios-apis/">The Evolution of Istio's APIs</a></td>
</tr>
<tr>
  <td>The design principles behind Istio's APIs and how those APIs are evolving.</td>
</tr>
</table>

IstioのAPI設計についての紹介。
(以降のアップデートでAPIの設計が変わったりするのだろうか？)

## Cloud-Native DevOps - JAXenter
<table>
<tr>
  <td colspan="2"><a href="https://jaxenter.com/cloud-native-devops-160928.html">Cloud-Native DevOps - JAXenter</a></td>
</tr>
<tr>
  <td><img src="https://jaxenter.com/wp-content/uploads/2019/08/shutterstock_118397425.jpg"></td>
  <td>Cloud-Native architecture implies adapting to the many new possibilities empowering innovation that paves the way for digital transformation.</td>
</tr>
</table>

CloudNativeの紹介やそれにまつわる企業(Amazon, Google)の企業文化やDevOpsの考え方の紹介。

## CNCF led Kubernetes security audit reveals 37 flaws in Kubernetes cluster
<table>
<tr>
  <td colspan="2"><a href="https://hub.packtpub.com/cncf-led-open-source-kubernetes-security-audit-reveals-37-flaws-in-kubernetes-cluster-recommendations-proposed/">CNCF led Kubernetes security audit reveals 37 flaws in Kubernetes cluster</a></td>
</tr>
<tr>
  <td><img src="https://hub.packtpub.com/wp-content/uploads/2018/07/security-policy.jpg"></td>
  <td>The Kubernetes security audit has revealed 37 flaws in Kubernetes cluster, including 5 high severity, 17 medium severity, 8 low severity.</td>
</tr>
</table>

Kubernetesのセキュリティ監査の結果がまとまったようです。

[Kubernetes Security Whitepaper](https://github.com/kubernetes/community/blob/master/wg-security-audit/findings/Kubernetes%20White%20Paper.pdf)

この記事では簡単な概要の紹介をしている。
`Recommendations for Kubernetes cluster administrators and developers`など、Kubernetesを利用する上で推奨すべき指針も示されている。

## Kubernetes Podcast from Google
<table>
<tr>
  <td colspan="2"><a href="https://kubernetespodcast.com/episode/066-kubectl-plugins-and-krew/">kubectl Plugins and krew, with Ahmet Alp Balkan and Luk Burchard</a></td>
</tr>
<tr>
  <td><img src="https://kubernetespodcast.com/_assets/images/Kubernetes-Podcast-Logo_1400x1400.png"></td>
</tr>
</table>

Kubernetes Podcast。今回はkubectlのplugin機構とそのリポジトリであるkrewの紹介。ゲストはkrewの作者 Luk Burchard

## The dark side of kubeconfig
<table>
<tr>
  <td colspan="2"><a href="https://banzaicloud.com/blog/kubeconfig-security/">The dark side of kubeconfig</a></td>
</tr>
<tr>
  <td><img src="https://banzaicloud.com/img/blog/high-surf.png"></td>
  <td>One of the key features of our container management platform, Pipeline is its ability to create multi- and hybrid-cloud Kubernetes environments using cloud provider-managed K8s or our own CNCF certified Kubernetes distribution, PKE. Recently, customers have been asking for a way to bring their existing Kubernetes clusters (upstream or other distributions) under Pipeline’s management, in order to benefit from the features our platform offers.
During the peer review of our new cluster import feature, we realized the potential security risk created by the common practice of sharing kubeconfig files.</td>
</tr>
</table>

kubeconfigにはauth-providerという機能があり、任意のバイナリに認証処理を移譲することができる。
この記事ではkubeconfigファイルを悪意ある人が書き換えることで、簡単に悪さができてしまう問題がある、ということを説明している。

確かにkubeconfigファイルはコマンドで生成したりすることが多いので、中身を見ずに実行するケースもあるのではないかと考えられる。

## GitHub gets a CI/CD service – TechCrunch
<table>
<tr>
  <td colspan="2"><a href="http://social.techcrunch.com/2019/08/08/github-actions-is-now-a-ci-cd-service/">GitHub gets a CI/CD service – TechCrunch</a></td>
</tr>
<tr>
  <td><img src="https://techcrunch.com/wp-content/uploads/2019/08/IMG_20190506_125609.jpg?w=591"></td>
  <td>Microsoft’s GitHub today launched the beta of a new version of GitHub Actions with full continuous integration and delivery (CI/CD) capabilities built right into the service. General availability is planned for November 13. The company also today announced that it now has more than 40 million…</td>
</tr>
</table>

GitHub ActionsのBetaリリースについて。（あんまりKubernetes関係ない？)

## Cloud Native Computing Foundation Reaches 100 End User Community Members - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/announcement/2019/08/14/cloud-native-computing-foundation-reaches-100-end-user-community-members/">Cloud Native Computing Foundation Reaches 100 End User Community Members - 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>Community reaches significant milestone as cloud native adoption continues to grow SAN FRANCISCO, Calif. – August 14, 2019 – The Cloud Native Computing Foundation® (CNCF®), which sustains and integrates open...</td>
</tr>
</table>

CNCFのEnd User Communityのメンバーが100になった話。

## Kubernetes cost monitoring: approaches & best practices
<table>
<tr>
  <td colspan="2"><a href="http://blog.kubecost.com/blog/cost-monitoring/">Kubernetes cost monitoring: approaches & best practices</a></td>
</tr>
<tr>
  <td><img src="http://blog.kubecost.com//assets/images/kubecost-icon.png"></td>
  <td>At Kubecost, we help teams monitor and manage Kubernetes spend. Teams commonly implement their first Kubernetes chargeback or showback solution with our software, and we frequently get asked questions about how to make this process go as smoothly as possible. This guide shares some of the different approaches to cost monitoring, best practices, and pitfalls that we’ve seen.</td>
</tr>
</table>

kubernetesのコストをモニタリングし、組織にどのようにリソース削減を促すかの方法論とベストプラクティスの紹介。
コストを計算する方法ではなく、計算されたコストをどのように組織運営に利用するかという観点での記事。

chargebackという実際に予算を請求する方法や、showbackという使用量をただ単に伝える方法などいくつかのアプローチを紹介しており、それらを運用する上での注意点についても述べられている。

Tragedy of the commons（コモンズの悲劇）というのは初めて聞いた。

> 多数者が利用できる共有資源が乱獲されることによって資源の枯渇を招いてしまうという経済学における法則。共有地の悲劇ともいう。

確かにKubernetesを大組織で利用する際にリソースを無駄に払い出しすぎる問題と合致する。

## Orchestration with Kubernetes coming to macOS
<table>
<tr>
  <td colspan="2"><a href="https://appleinsider.com/articles/19/08/13/orchestration-with-kubernetes-coming-to-apples-macos">Orchestration with Kubernetes coming to macOS</a></td>
</tr>
<tr>
  <td><img src="https://photos5.appleinsider.com/gallery/32362-55317-Screen-Shot-2019-08-13-at-105602-AM-xl.jpg"></td>
  <td>MacStadium has announced </td>
</tr>
</table>

MacStadiumというMac as a Service(Mac環境をクラウド上で利用できるサービス)にkubernetesが使われているという話。
iOSアプリのビルドなどに使うのかな？