KubeWeekly #172

KubeWeeklyは毎週Kubernetesに関する興味深いニュースを提供しています。（http://bit.ly/kubeweekly ）この記事は 2019/06/19に発行された [Kube Weekly #172]( https://us10.campaign-archive.com/?u=3885586f8f1175194017967d6&id=ff8300c203 )（このページなぜか#171となっていますがこれが#172です） を読んで、感じたことをメモ的にまとめたものです。
私の勘違いや説明不足による誤解もあるかと思いますので、この記事読んで「おっ」と思ったらURLを辿って本文を確認してください。

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


# The Headline

## Kubernetes for the impatient
<table>
<tr>
  <td colspan="2"><a href="https://www.oreilly.com/ideas/kubernetes-for-the-impatient">Kubernetes for the impatient</a></td>
</tr>
<tr>
  <td><img src="https://d3ucjech6zwjp8.cloudfront.net/1400x933/pixnio-1959133-1400x950_crop-22ba06ce3d390b0067eb9f7b0c6e0af3.jpg"></td>
  <td>Bridget Kromhout looks over the cloud native landscape and talks about what’s new, what’s next, and what you need to get started with Kubernetes right now.</td>
</tr>
</table>

 O'Reilly Velocity ConferenceのKeyNoteの紹介。
”せっかちな人のためのKubernetesの紹介”

# The Technical

## Containers and Orchestration with Docker and Kubernetes | CERN
<table>
<tr>
  <td colspan="2"><a href="https://home.cern/events/webcasts/containers-and-orchestration-docker-and-kubernetes">Containers and Orchestration with Docker and Kubernetes | CERN</a></td>
</tr>
</table>

CERNが実施するコンテナとKubernetesに関するWebCastの紹介 7/19に行われるようです。

## Automated build and deployment of Docker containerized OSGi applications on Kubernetes - JAXenter
<table>
<tr>
  <td colspan="2"><a href="https://jaxenter.com/osgi-applications-on-kubernetes-159310.html">Automated build and deployment of Docker containerized OSGi applications on Kubernetes - JAXenter</a></td>
</tr>
<tr>
  <td><img src="https://jaxenter.com/wp-content/uploads/2019/06/shutterstock_258450899.jpg"></td>
  <td>In this tutorial, you can learn how building and deployment of Docker containerized OSGi applications on Kubernetes can be automated.</td>
</tr>
</table>

JavaのWebアプリケーションをMavenでビルドし、デプロイする方法のチュートリアル。

Mavenのプラグイン https://github.com/deanjameseverett/k8-maven-plugin を紹介している。

## Deploying apps on multiple Kubernetes clusters with Helm
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/dailymotion/deploying-apps-on-multiple-kubernetes-clusters-with-helm-19ee2b06179e">Deploying apps on multiple Kubernetes clusters with Helm</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*5iTDZrwlyU2omKc1p2Ox0w.jpeg"></td>
  <td>Dailymotion kubernetes journey: Applications deployment</td>
</tr>
</table>

複数のKubernetesクラスタにアプリケーションをデプロイするためにHelmを利用している話。
チャートのリポジトリとして https://chartmuseum.com/ を利用している。
manifestのバリデートに https://kubeval.instrumenta.dev/ を利用している。

federation(v1)を使っているとクラスタ毎にマニフェストを出し分けることがうまくできないようで、結局それぞれのクラスタを独立して操作するようにしたらしい。

シークレットはVaultに保存し、デプロイ時にHelmに差し込む方式のようだ。

今後は https://github.com/weaveworks/flux を使った方法に移行しようとしている。

## How to get a single-node Kubernetes deployment up in seconds
<table>
<tr>
  <td colspan="2"><a href="https://www.techrepublic.com/article/how-to-get-a-single-node-kubernetes-deployment-up-in-seconds/">How to get a single-node Kubernetes deployment up in seconds</a></td>
</tr>
<tr>
  <td><img src="https://tr3.cbsistatic.com/hub/i/r/2019/06/18/4d6e5fda-99ad-4e64-8c57-a3bffc069612/thumbnail/770x578/b3cdc58d2a72bf5127f1e8d382e5d9b6/microk8sa.jpg"></td>
  <td>How do you launch a single-node Kubernetes deployment in seconds? With the help of Microk8s.</td>
</tr>
</table>

Microk8sを使ってKubernetesクラスタを構築する方法のチュートリアル。

## How to monitor Golden signals in Kubernetes | Sysdig
<table>
<tr>
  <td colspan="2"><a href="https://sysdig.com/blog/golden-signals-kubernetes/">How to monitor Golden signals in Kubernetes | Sysdig</a></td>
</tr>
<tr>
  <td><img src="https://sysdig.com/wp-content/uploads/2019/06/golden_signals-350x350.png"></td>
  <td>How to monitor Golden signals in Kubernetes. Golden signals are a set of values that provide a detection method for issues in an application.</td>
</tr>
</table>

マイクロサービスの監視に利用できる4つの`Golden Signals`を紹介。
もともと[Google SRE handbook](https://landing.google.com/sre/books/)で紹介された考え方らしい。

- Latency
  - 平均をみるのではなく分布をみるのが良い。パーセンタイルのヒストグラムで可視化するのが良い
- Error
  - HTTPのエラーコードなど
  - タイムアウトしているもの
  - 200で返すがコンテンツがエラーのもの
  - エラー率で可視化するのが良い
- Traffic / connections
  - レスポンスコードやビジネスロジックごとに分類すると良い
- Saturation
  - 指標となる最低限のメトリクスを決めることが重要となる
  - 80%を超えるとパフォーマンスが明らかに低下する

他にも様々な手法があるが・・・

- RED method(Rate, Errors, Duration)
  - これはインフラを監視を含んでいない。Golden Signalはこれらに加えてSaturationによりシステムの負荷を監視している
- USE method (Utilization, Saturation, Error)
  - データベースの最適化が不十分で遅くなっているような例を検知できない
  - Goden SignalsではLatency, Saturationをみることでこの現象を突き止めることができる

ともかくみるべきメトリクスを限定して、モニタリングをシンプルにすることが有用である。
一方で、情報量が少なくなってしまう点は見過ごすことができないが、Goden Signalsはその点でも有用である。

続けて、どこからにGolden Signalsを得るか、ということも述べられている。
自分でPrometheusのメトリクスを実装する方法や、Sysdig eBPFを使いアプリケーションを改修することなくGolden Signalsを取得する方法、APMを使ったりOpentracingを使って取得する方法、Istioを使って取得する方法などを紹介している。

最後にいくつかの注意を述べている。

- Golden Signalsは問題の可能性を検知する方法としては有用だが、その原因を特定するためにはさらなるメトリクスが必要である。検知と原因の特定は異なる考え方が必要となる
- 平均値は時に役に立たない。偏差やパーセンタイルを利用すべし
- アプリケーションに影響がないメトリクスの変化はアラーティングすべきではない。代わりに分析タスクとしてバックログに積んでおくのが良い。

## Kubernetes Operators Best Practices – Red Hat OpenShift Blog
<table>
<tr>
  <td colspan="2"><a href="https://blog.openshift.com/kubernetes-operators-best-practices/">Kubernetes Operators Best Practices – Red Hat OpenShift Blog</a></td>
</tr>
<tr>
  <td><img src="https://i2.wp.com/blog.openshift.com/wp-content/uploads/rafop2.png?fit=512%2C219&ssl=1"></td>
  <td>Introduction Kubernetes Operators are processes connecting to the master API and watching for events, typically on a limited number of resource types. When a relevant event occurs, the operator reacts and performs a specific action. This may be limited to interacting with the master API only, but will often involve performing some action on some …</td>
</tr>
</table>

Operator SDKを使ったオペレータの開発のベストプラクティスを紹介。

- リソースのバリデーション
- ファイナライザ
- リソースのOwner
- Statusの変更を無視する方法
- エラーの取り扱い

## Automating Highly Available Kubernetes and external ETCD cluster setup with terraform and kubeadm on AWS. – Ifrit LTD
<table>
<tr>
  <td colspan="2"><a href="https://ifritltd.com/2019/06/16/automating-highly-available-kubernetes-cluster-and-external-etcd-setup-with-terraform-and-kubeadm-on-aws/">Automating Highly Available Kubernetes and external ETCD cluster setup with terraform and kubeadm on AWS. – Ifrit LTD</a></td>
</tr>
<tr>
  <td><img src="https://ifritltd.com/wp-content/uploads/2019/06/kubeadm-ha-topology-stacked-etcd-1.png"></td>
  <td></td>
</tr>
</table>

Terraformを使ってAWS上にetcdクラスタとそれを利用するHAのKubernetesを構築する方法の紹介。
EtcdをMaster Nodeの外に作っているのが特徴。

## Where’s The Red Hat Universal Base Image Dockerfile? | Crunch Tools
<table>
<tr>
  <td colspan="2"><a href="http://crunchtools.com/ubi-build/">Where’s The Red Hat Universal Base Image Dockerfile? | Crunch Tools</a></td>
</tr>
</table>

Red Hat Universal Base Image(UBI)がどのように作られているか？そもそもベースイメージとはどのように作るものか？という解説。

結局はkickstartというRedHatのインストーラでインストールされたLinuxだよ。ということらしい。kickstartはO設定ファイルからOSをインストールするOSの自動インストールツールのようです。その構成ファイルを見ることでUBIがどのような構成かがわかるということのようです。

## dgkanatsios/CKAD-exercises
<table>
<tr>
  <td colspan="2"><a href="https://github.com/dgkanatsios/CKAD-exercises">dgkanatsios/CKAD-exercises</a></td>
</tr>
<tr>
  <td><img src="https://avatars1.githubusercontent.com/u/8256138?s=400&v=4"></td>
  <td>A set of exercises to prepare for Certified Kubernetes Application Developer exam by Cloud Native Computing Foundation - dgkanatsios/CKAD-exercises</td>
</tr>
</table>

CKADの対策のための予想問題的なもののようです。問題形式になっているので腕試しに良さそう。
参考にすべき kubernetes.io のページのリンク集も記載されている。

## Automate Kubernetes with GitOps
<table>
<tr>
  <td colspan="2"><a href="https://www.weave.works/blog/automate-kubernetes-with-gitops">Automate Kubernetes with GitOps</a></td>
</tr>
<tr>
  <td><img src="https://www.weave.works/assets/images/blt3d9b77872e5b2eb6/gitops-approvals.png"></td>
  <td>The goal of GitOps is to increase the velocity of your team’s output. It automates much of the process of Kubernetes releases and deployments and avoids the use of custom scripts.</td>
</tr>
</table>

GitOpsがなぜ必要なのか、どういうものなのか、というわかりやすい説明。


# The Editorial

## Top 3 Kubernetes networking tools and how they work
<table>
<tr>
  <td colspan="2"><a href="http://techgenix.com/kubernetes-networking-tools/">Top 3 Kubernetes networking tools and how they work</a></td>
</tr>
<tr>
  <td><img src="http://techgenix.com/tgwordpress/wp-content/uploads/2019/05/Kubernetes-networking-tools--1024x314.jpg"></td>
  <td>Kubernetes is a hard problem to tackle, but there’s a community of developers to make it easier for us. Case-in-point: These 3 Kubernetes networking tools.</td>
</tr>
</table>

有名な3つのCNIプラグインの特徴を紹介。Flannel, Calico, Weave Net

## Why Zero Trust Needs To Cover More Than The Network
<table>
<tr>
  <td colspan="2"><a href="https://www.forbes.com/sites/forbestechcouncil/2019/06/13/why-zero-trust-needs-to-cover-more-than-the-network/">Why Zero Trust Needs To Cover More Than The Network</a></td>
</tr>
<tr>
  <td><img src="https://thumbor.forbes.com/thumbor/600x315/https%3A%2F%2Fblogs-images.forbes.com%2Fforbestechcouncil%2Ffiles%2F2019%2F06%2Fa-95-500x500.jpg"></td>
  <td>As cyberattacks continue to grow in volume, velocity and sophistication, enterprise teams need a new approach to securing distributed, component-based cloud-native applications.</td>
</tr>
</table>

Zero Trustの考え方の紹介と、ベストプラクティスを紹介。

## Containers and Cybersecurity: Ansible, Kubernetes, More to Consider
<table>
<tr>
  <td colspan="2"><a href="https://www.channelfutures.com/security/containers-and-cybersecurity-ansible-kubernetes-more-to-consider">Containers and Cybersecurity: Ansible, Kubernetes, More to Consider</a></td>
</tr>
<tr>
  <td><img src="https://www.channelfutures.com/files/2019/06/Cloud-Container-Security-2.jpg"></td>
  <td>Containers are a very big deal in enterprise computing right now. Here, we'll look at the individual components used in the showcase and how each could be used by a cyber security team to replicate the work done at Interop.</td>
</tr>
</table>

Interrop19でデモされたRaspberry Piで作ったKubernetesクラスタのデモの紹介。

## How Kubernetes Gives CIOs The Chance To Make IT The Enterprise Hero
<table>
<tr>
  <td colspan="2"><a href="https://www.forbes.com/sites/forbestechcouncil/2019/06/17/how-kubernetes-gives-cios-the-chance-to-make-it-the-enterprise-hero/">How Kubernetes Gives CIOs The Chance To Make IT The Enterprise Hero</a></td>
</tr>
<tr>
  <td><img src="https://thumbor.forbes.com/thumbor/600x315/https%3A%2F%2Fblogs-images.forbes.com%2Fforbestechcouncil%2Ffiles%2F2019%2F06%2Fa-2019-06-14T085738.916-500x500.jpg"></td>
  <td>Kubernetes alone is not there yet, but the Kubernetes ecosystem is making strides in this direction.</td>
</tr>
</table>

CIOに向けたKubernetes導入の勧め。Kubernetesを全社に導入するために必要なステップを列挙している。

## Future Kubernetes Will Mimic What Facebook Already Does
<table>
<tr>
  <td colspan="2"><a href="https://www.nextplatform.com/2019/06/10/future-kubernetes-will-mimic-what-facebook-already-does/">Future Kubernetes Will Mimic What Facebook Already Does</a></td>
</tr>
<tr>
  <td><img src="https://3s81si1s5ygj3mzby34dq6qf-wpengine.netdna-ssl.com/wp-content/uploads/2018/09/facebook_Dc7sd.jpg"></td>
  <td>If you want to see what the future of the Kubernetes container management system will look like, then the closed source, homegrown Tupperware container</td>
</tr>
</table>

FacbookのインフラはKubernetesを用いているわけではないが、似たようなアイデアだが独自のオーケストレーションツールや、ストレージバックエンドを用いている。

これらの機能や特徴を学ぶことで、Kubernetesの未来を考えよう という記事。
FacebookのオーケストレーションツールTupperwareやストレージバックエンドDelosの簡単な紹介。

## Tigera Embraces eBPF to Advance Container Networking - Container Journal
<table>
<tr>
  <td colspan="2"><a href="https://containerjournal.com/2019/06/11/tigera-embraces-ebpf-to-advance-container-networking/">Tigera Embraces eBPF to Advance Container Networking - Container Journal</a></td>
</tr>
<tr>
  <td><img src="https://containerjournal.com/wp-content/uploads/2019/06/Tigera-eBPF-Container.jpg"></td>
  <td>Tigera is adding support within the open source Calico network software project for the extended eBPF additions to the Linux kernel. </td>
</tr>
</table>

CalicoがeBPFをサポートした話。istioのサイドカーの制御をeBPFで行うことでレイテンシを下げようとしているようだ。

## Cultivating production excellence
<table>
<tr>
  <td colspan="2"><a href="https://www.oreilly.com/ideas/cultivating-production-excellence">Cultivating production excellence</a></td>
</tr>
<tr>
  <td><img src="https://d3ucjech6zwjp8.cloudfront.net/1400x933/agriculture-1850891_1920_crop-e29cd42d22a01f3bc539ad5a7d2dac64.jpg"></td>
  <td>Liz Fong-Jones says management of complex distributed systems requires changing who's involved in production, how they collaborate, and how success is measured.</td>
</tr>
</table>

O'Reilly Velocity Conferenceのキーノートの動画。

## HPE Extends Hybrid Cloud Computing Strategy - DevOps.com
<table>
<tr>
  <td colspan="2"><a href="https://devops.com/hpe-extends-hybrid-cloud-computing-strategy/">HPE Extends Hybrid Cloud Computing Strategy - DevOps.com</a></td>
</tr>
<tr>
  <td><img src="https://devops.com/wp-content/uploads/2019/06/HPEhybridcloud.jpg"></td>
  <td>HPE announced at its HPE Discover 2019 conference an alliance with Google to embrace Kubernetes in hybrid cloud computing environments.</td>
</tr>
</table>

HPEのクラウド戦略について。Googleと提携してAnthosを利用するソリューションを提供するようだ。