KubeWeekly #142

KubeWeeklyは毎週Kubernetesに関する興味深いニュースを提供しています。この記事は 2018/07/25に公開された https://kubeweekly.com/kubeweekly-142/ を読んで、感じたことをメモ的にまとめたものです。
私の勘違いや説明不足による誤解もあるかと思いますので、この記事読んで「おっ」と思ったらURLを辿って本文を確認してください。

# The Headlines

## [The History of Kubernetes & the Community Behind It - Kubernetes](https://kubernetes.io/blog/2018/07/20/the-history-of-kubernetes--the-community-behind-it/)

OSCONでのMost Impactful Open Source Projectを受賞したので、このタイミングで振り返るKubernertesの歴史

## [11 Ways (Not) to Get Hacked - Kubernetes](https://kubernetes.io/blog/2018/07/18/11-ways-not-to-get-hacked/)

ハッキングされないための11の方法
Kubernetesのセキュリティの話。

Control PlaneとWorkloads、さらにThe Futureという3カテゴリに分けて紹介している。
ツールの紹介が充実している。

- ControlePlane
  - TLSで通信しよう
    - Control Planeの通信の様子の図がわかりやすい。
  - RBACで最低限の権限をつけよう。AuditLogを取ろう
    - [GitHub - liggitt/audit2rbac: Autogenerate RBAC policies based on Kubernetes audit logs](https://github.com/liggitt/audit2rbac)
  - サードパーティ認証を使おう
    - [GitHub - coreos/dex: OpenID Connect Identity (OIDC) and OAuth 2.0 Provider with Pluggable Connectors](https://github.com/coreos/dex)
    - [GitHub - negz/kuberos: An OIDC authentication helper for Kubernetes' kubectl](https://github.com/negz/kuberos)
  - etcdクラスアトォファイアーウォールで分離しよう
  - 証明書をローテートさせよう
- Workloads
  - Linuxのセキュリティ機能とPSPを使おう
    - [GitHub - genuinetools/bane: Custom & better AppArmor profile generator for Docker containers.](https://github.com/genuinetools/bane)
    - [GitHub - docker-slim/docker-slim: DockerSlim (docker-slim): Don't change anything in your Docker container image and minify it by up to 30x making it secure too! (free and open source)](https://github.com/docker-slim/docker-slim#quick-seccomp-example)
  - YAMLを静的解析しよう
    - [kubesec.io :: kubesec.io](https://kubesec.io/)
    - [GitHub - garethr/kubetest: Write unit tests for your Kubernetes configurations](https://github.com/garethr/kubetest)
  - root以外でコンテナを動作させよう
  - NetworkPolicyを使おう
    - [GitHub - controlplaneio/netassert: network security testing for DevSecOps workflows](https://github.com/controlplaneio/netassert)
  - イメージをスキャンしよう、侵入検知システムを動かそう
    - [GitHub - coreos/clair: Vulnerability Static Analysis for Containers](https://github.com/coreos/clair)
    - [GitHub - aquasecurity/microscanner: Scan your container images for package vulnerabilities with Aqua Security](https://github.com/aquasecurity/microscanner)
    - [Grafeas](https://grafeas.io/)
    - [Container Security & Cloud Native Security | Twistlock](https://www.twistlock.com/)
    - [Aqua Container Security - Docker, Kubernetes, OpenShift, Mesos](https://www.aquasec.com/)
    - [Sysdig | Sysdig Secure](https://sysdig.com/product/secure/)
    - [GitHub - draios/falco: Sysdig Falco: Behavioral Activity Monitoring With Container Support](https://github.com/draios/falco)
- Feature
  - サービスメッシュを動かそう
    - [Linkerd](https://linkerd.io/)
    - [Istio](https://istio.io/)
    - [spiffe.io](https://spiffe.io/)

## [How to scale Microservices with Message Queues, Spring Boot, and Kubernetes](https://medium.freecodecamp.org/how-to-scale-microservices-with-message-queues-spring-boot-and-kubernetes-f691b7ba3acf)

先週読んだ

# The Technical

## [Feature Highlight: CPU Manager - Kubernetes](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/)

新機能紹介 beta機能であるCPU Managerについて。
CPUコアを占有するような設定ができる機能のようです。
占有ということなので、整数のコアの指定が必要。
機械学習のようなCPUを占有するワークロード向けの機能。

## [Horizontal Pod Autoscaler Kubernetes Operator · Banzai Cloud](https://banzaicloud.com/blog/k8s-hpa-operator/)

Deployment(or StatefulSet)にannotationをつけるとHPAを自動で作ってくれるoperatorの紹介。
既存のHelm ChartにHPAの機能だけをつけたいけどChart自体はいじりたくない、、という課題に答えるプロダクトのようだ。

## [Azure Functions on Kubernetes – Asavari Tayal – Medium](https://medium.com/@asavaritayal/azure-functions-on-kubernetes-75486225dac0)

Azure Functions Core Tools を使うと、AzureFunctionと同じ機能をローカル環境で利用することができる。
要はDockerfileやソースコードをscaffoldingしてくれて、kubectlをラップしてKubernetes上にデプロイしてくれるツール。

## [NATS Operator: Integrating Kubernetes ServiceAccounts for operated NATS clusters](https://www.nats.io/blog/nats-operator-and-service-accounts/)

NATS Operatorの解説。

- NatsCluster
- NatsServiceRole

のCRDを定義。
NatsServiceRoleができるとそれに対応したServiceAccountと、Tokenがつくられ、そのTokenでNATSにアクセスする。

TokenRequest　APIを使ってNATS用のTokenを作る。この差異audienceを設定して、NATSに対してのみ使えるように制限している。
PodSharedProcessNamespaceによりNATS serverと同居しているreloaderがHUPを送ることでゼロダウンタイムでのroleの更新を実現している。

まだα版。NATSにはJWTでの認証はサポートされていないとのこと。（NATS Operatorの時はどうやっているのだろうか？独自ビルド？）

## [Hands-On CI/CD for Microservices With Jenkins X - DZone Microservices](https://dzone.com/articles/hands-on-cicd-with-jenkins-x)

Jenkins Xのチュートリアル記事。

JenkinsXはGKEクラスタも作るし、GitやDockerfile,Helm chartのskaffoldingも行うし、至れり尽くせり

## [Deploying a Stateful Application on Google Cloud Kubernetes Engine | @RisingStack](https://blog.risingstack.com/deploying-a-stateful-application-on-google-cloud-kubernetes-engine/)

GKEにStatefulなアプリケーションをデプロイするチュートリアル。
アプリケーションはGhostというブログエンジン
テーマや画像を永続データとして持っているとのこと。

データベースはGCPのものを使う、接続用のプロキシをサイドカーに仕込む
type=Loadbalancerでサービスを公開する。

## [Building an operator for Kubernetes with kubebuilder](https://itnext.io/building-an-operator-for-kubernetes-with-kubebuilder-17cbd3f07761)

　[Building an operator for Kubernetes with the sample-controller](https://itnext.io/building-an-operator-for-kubernetes-with-the-sample-controller-b4204be9ad56) ではKubernetesリポジトリにあるサンプルのcontroller( [GitHub - kubernetes/sample-controller: Repository for sample controller. Complements sample-apiserver](https://github.com/kubernetes/sample-controller) )を改造して簡単なControllerを実装している。


この記事ではKubeBuilderについて説明をしている。

[Building an operator for Kubernetes with operator-sdk](https://medium.com/p/40a029ea056) ではoperator-sdkについて説明している。

生でcontrollerを書くのとKubeBuilderで書く場合、operator-sdkで書く場合の違いが比較するのに良い記事

## [Debugging a Java Rate Limiter Service using Telepresence and IntelliJ IDEA](https://www.telepresence.io/tutorials/intellij)

Telepresenceの本家チュートリアル。
IntelliJと連携してリモートのKubernetesのPodをデプロイすることができる。

# The Editorial

## [Kubernetes Wins the 2018 OSCON Most Impact Award - Kubernetes](https://kubernetes.io/blog/2018/07/19/kubernetes-wins-2018-oscon-most-impact-award/)

Kubernetesが2018 OSCONのMost Impact Awordを受賞した話。

## [Creating an Effective Developer Experience on Kubernetes: CNCF Webinar Recap](https://medium.com/@danielbryantuk/creating-an-effective-developer-experience-on-kubernetes-cncf-webinar-recap-94bcc647db9b)

[CNCF Webinar](https://www.youtube.com/watch?v=h_Nxm9Huz30)のまとめ

開発経験の向上をどのように実現するか？といった内容

開発環境を考える上で「環境構築」は重要。どういう環境構築方法を提供すべきか？

ワークフローの面では

- local development
- packaging apps
- CI/CD
- deployment control
- observability

をうまく考慮して管理する必要がある。


DataWire社はよくこういう開発ワークフロー系の話をしている印象。

## [Build, deploy, manage modern serverless workloads using Knative on Kubernetes](https://m.chmarny.com/build-deploy-manage-modern-serverless-workloads-using-knative-on-kubernetes-180c1a55e1b5)

knativeの話。
リソースの紹介がされている。具体的にどのように使えるかは今後記事を書く予定とのこと。

## [The Kubernetes Third-Year Anniversary Is Just the Beginning - The New Stack](https://thenewstack.io/the-kubernetes-third-year-anniversary-is-just-the-beginning/)

Kubernetes3周年
その勢いを説明している。

## [Reinventing the World’s Largest Education Company With Kubernetes - Cloud Native Computing Foundation](https://www.cncf.io/blog/2018/07/24/reinventing-the-worlds-largest-education-company-with-kubernetes/)

PearsonのKubernetesを使った事例の紹介。

## [Kubernetes contributor experience - DevRel.net DevRel.net](https://devrel.net/developer-experience/kubernetes-contributor-experience)

Kubernetes のコントリビューターの話。SIGに分けて活動することがどのように合理的なのか、などが語られているらしい。

（Transcriptは長いので読んでいない）

## [Why Kubernetes May Be Big Business For Solution Providers - Page: 1 | CRN](https://www.crn.com/news/cloud/300106816/why-kubernetes-may-be-big-business-for-solution-providers.htm?itc=refresh)

# バックナンバー
- KubeWeekly #141 https://qiita.com/inajob/items/7771e5a5a4409f433042