📰

[2021/06/18] 今週のKubernetes + Cloud Native + その他ニュース

11 min read

この記事は#kubenewsの2021年6月18日の回で話す、@bells17が今週気になったニュース記事をまとめたものです。
自分が気になった今週のKubernetes + Cloud Native + その他なニュースをまるっとまとめておいて、その中から時間内に話せるものを話そうと思ってます。

あと記事はざっと読んで書いてるものが多いので、詳細はリンクとかで貼ってる記事の中を読んでもらった方が正確です。

配信URL:

https://youtu.be/SorzeScSa0I

告知とか

Kubernetes Internal #9

https://k8sinternal.connpass.com/event/213280/

@go_vargoさんよりMinikubeの実装やコントリビューター活動についてお話してもらいました。
Minikubeの実装のお話もとても良かったのですが、Minikubeの全体的なアーキテクチャのお話やコントリビューター活動のお話をかなり色々伺うことができて、なかなか聞けないお話が聞ける良い会になったと思うのでまだ観ていない方は是非!
a

https://www.youtube.com/watch?v=VpMPHHTm6So

Kubernetes Novice Tokyo #11

https://k8s-novice-jp.connpass.com/event/213756/

2021/06/22(火) 19:00 〜 20:30から6月のKubernetes Novice Tokyoが開催予定。
今回はLT4つとメインセッション1つの構成のようです。

Kubernetes Meetup Tokyo #42

https://k8sjp.connpass.com/event/214286/

2021/06/24(木) 19:00 〜 21:30から6月のKubernetes Meetup Tokyoが開催予定。
今回の内容は

  • KubeVirtによるIaaS基盤構築
  • KubernetesとGatlingを使って、負荷試験に秒間10kユーザーをシミュレーションする方法
  • Istioによるサービスメッシュをどのようにプロダクションレディにするか

となっているようで

  • 仮想化
  • 負荷試験
  • サービスメッシュ

と結構深めのテーマのセッションが3つ並んでいるので聴き応えがありそうです。

Fireside Chat with DHH - The Global Dev Study #3

https://forkwell.connpass.com/event/214678/

forkwellさん主催のイベントでDHHをゲストに呼んでのイベントとのこと。
DHH直に見たこと無いので楽しみ。

インフラ勉強会

https://twitter.com/infra_workshop/status/1405676656883159042?s=21

興味深いテーマを扱うようです。

Kubernetes + Cloud Native

Kubernetes v1.23のリリースは今年の12月を予定しているらしい

https://github.com/kubernetes/sig-release/blob/c3af68dcf661f56add213a34e858f682f32ca9fc/releases/release-1.23/README.md

こんなん出てたよ

Kubernetes PodcastにサイボウズさんのMocoの話が取り上げられたらしい

https://kubernetespodcast.com/episode/151-multi-instance-gpus/

日本開発のOSSの話が取り上げられてる事例が増えるのは良き。

RedHatさんのvscodeのYAMLプラグインが良さげのよう

https://twitter.com/yosshi_/status/1404760734651719680

https://twitter.com/Ladicle/status/1404791224062537728

https://twitter.com/Ladicle/status/1404799035597373455

ちなみにJetBrainのシンタックスも優秀らしいです。

https://twitter.com/ponde_m/status/1404767131216928772

Kubernetesにコントリビュートする方法

https://www.digitalocean.com/blog/open-source-contributing-kubernetes-beginners/

Digital Oceanのエンジニアの方がKubernetesにコントリビュートする方法やメリットなどを書いてくれている記事。
結構詳しく書いてくれているのでためになった。
vargoさんにもコントリビュート話しを色々聞けたタイミングなので良いタイミングだと思った。

Cloud Native Lounge #1「サービスを支えるクラウドネイティブな基盤」

https://forkwell.connpass.com/event/215187/

青山さんのKubernetesの説明や最近開発しているOperatorの話しなど聴けてよかった。
あとさり気なく青山さんが僕の質問ツイートに答えてくれてたので嬉しかった。

https://twitter.com/amsy810/status/1405494815572172803

他にもユーザーベースさんのGKEやECS話しを聴けたのもありがたい。
Cloud Native LoungeではこれからもCloud Nativeに関する事例話しを聴けるとのことなので楽しみ。

ミクシィ みてねのGKE事例

https://twitter.com/isaoshimizu/status/1405507024335474691?s=21

僕が前所属していたミクシィのみてねという家族アルバムサービスでのGKEの事例のお話。
みてねチームのSREとしての諸々の取り組み~Kubernetes導入の話まで全体的に網羅されていてよかった。
HPAのオートスケーリングのメトリクスにKEDAというのを利用してるとのこと。

  • SQSのキューの長さ
  • Sidekiqワーカー稼働率
  • SageMakerインスタンス数

を利用してオートスケーリングをコントロールしてるとのことで興味深かった。

https://keda.sh/

GKE Autopilot に CUD (確定利用割引)が適用可能に

https://twitter.com/kazshinohara/status/1404637671280971780?s=21

GKE Autopilotをある程度のボリュームで使い続ける予定のあるユーザーは利用するとそれなりの割引額になると思うので是非検討を。

Trivyの@knqyf263さんによるコンテナのlazy pullingについての調査記事

https://twitter.com/knqyf263/status/1404562726437928967?s=21

難しいけど雑な理解としては以下のような感じ

  • コンテナのlazy pullingを実現する(e)Stargzについて調べられた内容になっている
  • コンテナイメージで利用されるデータはコンテナ全体のデータのうちの一部であることが多いから、はじめは必要なファイルだけpullしておいて、readが発生したタイミングでイメージのpullをすればええやん、というのがlazu pullingのよう
  • そのためにStargzという https://github.com/google/crfs で提案されたフォーマット?が利用されている
  • そしてStargzをベースにしたeStargzではStargzを更に効率化している
  • このlazy pullingをcurlでできないかトライされた
  • 将来的にはTrivyにもこのlazy pullingの仕組みを入れていくかもしれないとのこと

とりあえず(難しかったので)雑に読んで理解できたのがここまで...

Minikubeメンテナーの方が作られているKubernetes起動までのベンチマークツール

https://github.com/tstromberg/time-to-k8s

vargoさんのセッションの中で紹介してくれた、Minikubeのパフォーマンスチューニングのためにメンテナーの方が作られたベンチマークとのこと。
Kubernetes起動~リソースのデプロイが成功するまで?のベンチマークを計測してくれるらしい。

https://twitter.com/kyohmizu/status/1405127674675093511

Openshiftの簡易版microshift

https://twitter.com/omichiki1/status/1405165639887581185?s=21

microshiftというののリポジトリが作られたらしい

あなたの知らないKubernetesのServiceの仕組み

https://eng-blog.iij.ad.jp/archives/9998

KubernetesのServiceリソースと実際のiptables/ipvsとの関係を説明してくれていて勉強になる。
普段あまり使わないヘッドレスサービスやExternalName Serviceについても解説しているので助かる。

KubernetesのSecretを1Passwordで管理する

https://zenn.dev/tsuzu/articles/k8s-onepassword-operator

タイトルの通り1PasswordからKubernetesのSecretを生成できるOperatorの話。
なんというか1PasswordとKubernetes Secretという組み合わせが考えたことなくて、なるほどーという感じでした。

One year kured - your Kubernetes Reboot Daemon

https://www.weave.works/blog/one-year-kured-kubernetes-reboot-daemon

weaveworksのkuredというKubernetesのノードを自動でいい感じに再起動とかしてくれるツール?
リポジトリはこれ

https://github.com/weaveworks/kured

READMEとかを見てみたんだけどあまりピンと来ていないので、ユースケースとかわかる方いれば教えてほしいな

kubeweekly

まだ出てなかった〜

lwkd

https://lwkd.info/2021/20210615

今週結構面白そうなネタが多い

参考(今回のやつ音が入ってない!)

https://www.youtube.com/watch?v=nHgHWCUls4o

Create example component for integrating with component-base

https://github.com/kubernetes/component-base というKubernetesの共通コンポーネントを扱うリポジトリがあったけど、それを使うための例が作られたようなので、そろそろKubernetesの各実装もcomponent-baseで置き換えた方が良いものは置き換えが始まる感じ?
(このPRで追加されたのはあくまでログのコンポーネントだけみたいだけど)

Update kubeadm control-plane to run as non-root.

kubeadmのstaticpodを使ったcontrol-plane実行をnon-rootで行えるようなアップデートのよう。
RootlessControlPlane feature gateを有効にしていると実行可能なように見える。

https://github.com/vinayakankugoyal/kubernetes/blob/59b4b124df03e496b5c05909d1ff15e916c2c4d8/cmd/kubeadm/app/phases/controlplane/manifests.go#L100-L111

KEPはこれのよう。

https://github.com/vinayakankugoyal/enhancements/blob/5059ce8ee830300136ead98a295a013840922c23/keps/sig-cluster-lifecycle/kubeadm/2568-kubeadm-non-root-control-plane/README.md

導入のきっかけとして

https://kubernetes.io/blog/2019/02/11/runc-and-cve-2019-5736/
CVE-2019-5736が挙げられていた。
  • kube-controller-manager
  • kube-scheduler
  • etcd
  • kube-apiserver

をnon-rootで実行できるようにするという感じなのか、多分。
それで実行するコンポーネントごとにユーザー/グループを分けてそれぞれに権限を与えてる感じのよう。

https://github.com/vinayakankugoyal/enhancements/blob/5059ce8ee830300136ead98a295a013840922c23/keps/sig-cluster-lifecycle/kubeadm/2568-kubeadm-non-root-control-plane/README.md#shared-files
を見てるとcontrol planeがアクセスしているファイルの一覧(全部?)が書かれていてへーという感じになる。

Drop viper-config config for tests and get rid of viper dependency

https://github.com/kubernetes/kubernetes/pull/102598

https://github.com/spf13/viper
というモジュールを入れいたけど実際には誰も使ってなかったので削除したというPR。
Kubernetesでもこういうのってあるんやな〜と思った。

Graduating SetHostnameAsFQDN feature to GA

https://github.com/kubernetes/kubernetes/pull/101294

タイトルの通りPodにFQDNを設定できるSetHostnameAsFQDNがGAに昇格とのこと。
KEPはこれ

https://github.com/javidiaz/enhancements/blob/e5374e258711471d79c960cd3490a75edce55573/keps/sig-node/1797-configure-fqdn-as-hostname-for-pods/README.md

Automated cherry pick of #101615: fix removing pods from podTopologyHints mapping

https://github.com/kubernetes/kubernetes/pull/101896

元々は

https://github.com/kubernetes/kubernetes/pull/101615

でTopology Aware Hintsに関する修正がおこなれたらしい。
Topology Aware Hintsはこれ

https://kubernetes.io/docs/concepts/services-networking/topology-aware-hints/

んで、その機能をv1.20にも反映するためにはじめに挙げたPRでelease-1.20ブランチにcherry-pickすることでバックポートしている。
Kuberetesの下位バージョンへの各種変更のバックポートってこんな感じで対応してるんだーという事例を知れたという意味で勉強になった。

その他

エンタープライズの学びが増えました

ここらへんの話です
ツイート開くとリプで色々教えてもらってます

https://twitter.com/bells17_/status/1405740638906183685

https://twitter.com/bells17_/status/1405801998125985794

https://twitter.com/bells17_/status/1405803439456591872

Lyftのジョブ実行基盤?Clutch

https://clutch.sh/docs/about/what-is-clutch

特に最近出たツールではないんだろうけど、僕が最近こんなのあるんだって知ったというやつです。
以下のような機能があるらしい。

  • 🔌非常に拡張性があります。
    • 拡張ポイントはスタック全体に存在し、書き換えなしでカスタム統合を可能にします。
    • クラッチは構成主導型であるため、さまざまな環境に合わせて簡単に展開および再構成できます。
    • プライベート拡張機能は、フォークを維持せずにプラグインできます。
  • 🔍発見のために建てられました。
    • リソースには多くの一般的な名前があります。ClutchのResolverパターンにより、リソースの検索がこれまでになく簡単になります。
    • Resolverは、サーバーで生成されたフォームに1行のフロントエンドコードを提供し、APIとフロントエンドが常に同期していることを保証します。
  • ⚛️開発、実行、保守が簡単です。
    • GoとTypescriptに加えて、生成されたインターフェイス全体のProtobufを使用して開発されました。
    • バックエンドの抽象化により、緩い結合が保証され、機能開発がレールに組み込まれます。
    • フロントエンドコンポーネントを使用すると、フロントエンドの経験が限られている開発者が機能を簡単に出荷できます。
    • バックエンドとフロントエンドの両方のリソースを含む単一のバイナリとしてデプロイ可能。
    • 基本的な監査、承認、統計、およびロギングは、すべてのエンドポイントで無料で提供されます。
  • 🔒安全で観察可能。
    • シングルサインオンのサポート。
    • ベンダーのIAMポリシーがサポートする範囲を超えて、きめ細かいアクセス制御を行うための役割ベースのアクセス制御(RBAC)エンジン。
    • Slackなどのシンクを備えた組み込みの監査。
    • 広範なロギングおよび統計機能。

正直あまり調べられてるわけではないんだけど、今度調べてみたいなという感じがしてます。

JSON Web Message(JWM)なるものがあるらしいですよ

https://twitter.com/pospome/status/1405191075199811585?s=21

https://medium.com/mattr-global/jwm-a-new-standard-for-secure-messaging-a21d3daa4403

軽く読んだ感じJSON Web Token(JWT)的な立ち位置のやつなんだろうなーとは思ったけど、具体的に何がどう良くなってるとかわかってない。
詳しい人教えて〜

git-tips

https://github.com/isotai/git-tips

いろんなgitのコマンドのtipsをまとめているリポジトリを日本語を含めた多言語に翻訳してくれているリポジトリ。
思ってた以上にめっちゃコマンドの数があるので、今度ちゃんと眺めてみたい。

基礎線形代数講座

https://www.slideshare.net/SEGADevTech/ss-249343092

セガの数学の研修資料が公開されたらしい。
ちなみに僕には難しくてなんもわからんかった。

Utopia

https://utopia.app/

GUIからビューをいじることでHTML/CSSを生成してくれるツール(のように見える)。
HTML/CSSを生成するのが目的っぽい雰囲気なのでWYSIWYGエディタとかとはまた別の方向性なのかな?

はじめてゲームプログラミング

https://youtu.be/T1E8JEUckM8

にじさんじの社さんもやってた。
Unityとかのゲームプログラミングやったことないけど面白そう。

みずほの障害報告

https://www.mizuho-fg.co.jp/release/20210615release_jp.html

なんていうか、大変そうだなぁという...

printデバッグとかを駆使してGoの難解?なバグを発見した話し

https://github.com/golang/go/issues/46560#issuecomment-860075596

ぶっちゃけ全然理解できてないけどすごい。
この話がきっかけでタイムラインが一時printデバッグの話で埋まってた印象。

Webassemblyコンパイラを自作しよう

https://zenn.dev/akatsuki/articles/c7a4ece880e54e

タイトルの通りWebassemblyコンパイラを自作していく記事の翻訳記事のようでした。
ちなみに僕には難しくてよくわからなかったです。

RustでLinuxカーネルの機能を拡張しよう!

https://medium.com/nttlabs/ebpf-bytecode-in-rust-7612c69c151d

RustでeBPFコード実装をしていく話しでした。
ただ結論としてはRustで実装するよりC言語で実装したほうが簡単とのことです。

ここらへんの考え方はもちろん人によっても異なるよう。
例えばこんな感じのお話をうづらさんから頂いた。

https://twitter.com/udzura/status/1404375371814817798

呪い: 見積もりの3倍だけ常にかかってしまう

https://medium.com/@katzchang/呪い-見積もりの3倍だけ常にかかってしまう-7337a1f74253

結構わかるなーという内容。
僕も不慣れな領域はだいたい1.5-2倍くらいにして見積もるようにしてるけど、だいたい実際にそこらへんで実際の工数が落ち着く感じなので。