🍮

Neco Weekly (2022-07-29号)

2022/08/01に公開

Neco Weekly (2022-07-29号)

サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。

今回は第2回目の記事となります。

✨ New Features

Argo CD: Applications in any namespace

https://github.com/argoproj/argo-cd/pull/9755

Argo CD 2.5 でオプトイン方式で導入予定の新機能です。
これは argocd namespace 以外の namespace で Application リソースの作成が可能になるというものです。

これまでの Argo CD では argocd namespace にしか Application リソースが作成できなかったため、複数のチームが Argo CD を利用している場合 App of Apps Pattern を採用しようとすると、適切な権限設定がおこなえないという問題がありました。

この新機能が導入されると、 Kubernetes の RBAC 機能と AppProject の設定を組み合わせて、適切な権限で App Of Apps Pattern を実現することが可能になります。

ちなみに Neco チームでは Cattage というカスタムコントローラを開発して、argocd namespace 以外の namespace で Application リソースが作成できるようにしています。

Loki 2.6の新機能の詳細

https://grafana.com/blog/2022/07/27/grafana-loki-2.6-release/

Loki 2.6 のリリースノートは先週紹介しましたが、新しく導入されるマルチテナントクエリーとログの削除に関するブログが公開されていました。

Loki はもともとマルチテナント対応しているのですが、今回から複数のテナントにまたがったログを 1 つのクエリで処理できるようになったそうです。

また、クエリを指定して特定のログを削除することができるようになりました。
GDPR 対応のときなどに役立ちそうです。

Teleport 10

https://goteleport.com/blog/teleport-10-feature-overview/

Teleport 10 で導入される予定の新機能です。
非常に盛りだくさんなので、我々が気になるものをいくつかピックアップして紹介します。

まずは Resource access requests です。
これは、Teleport で特定の権限で操作する際に承認が必要となるようにできるという機能です。
これを利用して、リードオンリーであれば承認なしで操作可能で、変更操作をおこなう場合は承認が必要にしておけば、本番環境での運用を安全に実施できるようになりそうです。
以前、メルカリさんが同様の機能を自作しているというブログも見かけました。

次に気になるのは Kubernetes operator for easy deployment です。

Teleport は Kubernetes Native なツールではないということもあり、新しいユーザーやロールを追加する際に CLI を利用して手動で操作する必要がありました。
この Kubernetes Operator により、カスタムリソースでユーザーやロールの追加が可能になるようです。
Neco チームとしては 3 年くらい前から要望を出していたものなので、それがようやく実現されたということで嬉しい限りです。

もう一つ気になったのは Moving away from Kubernetes persistent volume storage というものです。

これまでトークンなどの情報を保持するために Persistent Volume を使っていたのですが、そうするとスケーラビリティの点などで問題があったと。
そこで Persistent Volume の代わりに Kubernetes の Secret リソースにデータを保持する形に変更したというものです。
ConfigMap や Secret リソースに保持できるデータのサイズには制限がありますが、1 つのテクニックとして知っておくといいですね。

👀 Notable Articles

The Art of SLOs

https://sre.google/resources/practices-and-processes/art-of-slos/

SLO 策定のワークショップ資料です。
日本語の動画もあるし、スライド、参加者用、ファシリテーター用の資料が用意されていて非常に充実しています。

Kubernetes Exploit Hub

https://github.com/rootsecdev/Azure-Red-Team/blob/master/Kubernetes/Readme.md

Kubernetes クラスターへの侵入方法や、ペネトレーションテストのツールなどをまとめているページです。

pledge

https://justine.lol/pledge/

OpenBSD には pledge というシステムコールの機能を制限するシステムコールがあるそうです。
この記事は pledge を Linux に移植した話です。

Seccomp でも同じことはできるのですが、 pledge を使うとかなりシンプルに記述できるようになるそうです。

🛠️ Tools, Frameworks, Libraries

Predictive Horizontal Pod Autoscaler

https://predictive-horizontal-pod-autoscaler.readthedocs.io/en/latest/

将来必要な Pod 数を予測してくれる HPA 実装です。
標準の HPA は CPU の使用量などのメトリクスに応じて Pod の数を調整してくれるのですが、メトリクスの増加に反応してから Pod の数を増やしていたのではリクエストの増加に間に合わないケースがあります。

現在この PHPA では、線形回帰と Holt-Winters 法にという 2 種類の予測モデルを提供しています。
Holt-Winters 法は季節変動を考慮してくれるので、特定の時間帯にリクエスト数が多くなるようなケースで役立ちそうです。

Aya: your tRusty eBPF companion

https://deepfence.io/aya-your-trusty-ebpf-companion/

Rust を使って eBPF のコードが書けるというものです。
eBPF のマップを操作するときとかに型での制約がかかるので、安全なコードが書けるようになるそうです。

nFPM

https://nfpm.goreleaser.com

GoReleaser が提供している deb, rpm, apk パッケージを生成してくれるツールです。
Neco チームでは deb パッケージを作ることはあるのですが、いろいろな環境にツールを提供したい場合にはこういうツールを使うと便利そうですね。

あとがき

Neco Weekly を毎週やっているとすぐにネタが切れてしまうのではないかと心配していたのですが、意外とたくさんネタが集まったのでホッとしています。

サイボウズ Necoチーム 😺

Discussion