🥌

Neco Weekly (2022-09-30号)

2022/10/03に公開

Neco Weekly (2022-09-30号)

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

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

👀 Notable Articles

Under-documented Kubernetes Security Tips

https://www.macchaffee.com/blog/2022/k8s-under-documented-security-tips/

文書化されていない Kubernetes のセキュリティに関する注意点を紹介している記事です。

特に2つめにあげられている「The Kubernetes API has undocumented verbs and subresources」は我々も注意しなければならないと感じました。
たとえば Admission Webhook でコンテナの設定に制限をかけていた場合でも、 Ephemeral Container に対する制限をかけ忘れているケースはよくありそうです。

なお、Ephemeral Container に対するセキュリティ対策については、以下の記事も参考になります。

Kubernetes 1.25: CustomResourceDefinition Validation Rules Graduate to Beta

https://kubernetes.io/blog/2022/09/23/crd-validation-rules-beta/

Kubernetes 1.25 で、Common Expression Language (CEL) という記法で CRD のバリデーションができる機能が Beta になりました。
この機能を使うと、Admission Webhook を実装しなくてもある程度柔軟に CRD のバリデーションを設定することが可能になります。

この機能を試してみた記事が以下になります。

さらに、フィールドを Immutable にしたり、リストやマップに対して要素の追加のみを可能にする例が以下のブログで紹介されています。

NGINXの運用をちょっとだけ楽にするKubernetes Controllerを実装してみた

https://zenn.dev/junya0530/articles/97b8926799b755

Server-Side Apply を利用したカスタムコントローラの実装を紹介している記事です。
まだまだ Server-Side Apply を活用した事例というのは少ないので、こうやって事例が増えていくのは良いですね。

インターンシップ

PFN さんとメルカリさんのインターンシップの成果を報告している記事です。

Neco チームでも IPFS の導入やセキュリティ対策の強化を検討しているため、非常に興味深い内容でした。

🤝 Events

ArgoCon 2022: Attacking Argo CD with Argo CD (and then Defending)

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

先日開催された ArgoCon 2022 の中で興味深かったセッションの紹介です。

このセッションでは、Argo CD の設定を Argo CD で管理しているケースにおいて、攻撃者に設定を書き換えられてしまう問題とその対策を紹介しています。

対策としては、AppProject リソースの sourceReposdestinations を正しく設定することや、Argo CD の RBAC 機能を正しく利用することが大事だと説明されています。
また、Argo CD 2.5 で導入される以下の新機能についても軽く触れられていました。

さらに後半では、App-of-Apps パターンにおいてユーザーが任意のプロジェクトを指定できてしまう問題や、ユーザーが AppProject を自由に作成できない問題が取り上げられていました。
現状ではレビューでチェックするしかないということでした。

ちなみに、Neco チームでは Cattage という OSS を開発し、App-of-Apps パターンにおける権限の問題を解決しています。

✨ Release Notes

Trivy Operator v0.2.0

https://twitter.com/ChenKeinan/status/1570432959525834752

Trivy Operator v0.2.0 がリリースされました。
Deprecated や削除された API の利用を検出できたり、Webhook を使って検出結果を通知できるようになったそうです。
これはかなり便利そう。

Kubebulder v3.7.0

https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v3.7.0

新しい機能が多く含まれていますが、特に以下の3つに注目です。

  • 生成するプロジェクトがマルチアーキテクチャ対応した
  • カスタムメトリクス用の Grafana ダッシュボードを生成できるようになった
  • 生成するマニフェストのラベルが Kubernetes 推奨の形式に変更された

controller-tools v0.10.0

https://github.com/kubernetes-sigs/controller-tools/releases/tag/v0.10.0

生成される CRD のマニフェストが、これまでは生成するたびに順序が変化していたのですが、ちゃんとソートして出力されるようになりました。
しかし、Webhook の設定に関して同様の問題がまだ残っているため、Neco チームとして Issue を投げて対応しています。

Stern v1.22.0

https://github.com/stern/stern/releases/tag/v1.22.0

ログが JSON 形式で出力できるようになりました。
ログ解析したいときに便利そうですね。

🛠️ Tools, Frameworks, Libraries

viddy

https://github.com/sachaos/viddy

kubectl の出力を watch するときに便利なツールです。
変化のあった箇所に色をつけて表示してくれたり、変更履歴を保持してあとから差分を確認できたり、なかなか便利そうです。

Debugging Large and Complex Dockerfiles Gets Easier with Buildg

https://www.infoq.com/news/2022/09/debug-dockerfiles-buildg/

Dockerfile を対話的にデバッグするためのツールです。
ブレイクポイントを張って実行を止めたり、ステップ実行したり、任意のコマンドを実行したりできるようです。
VS Code との連係もできるようで、なかなか便利そうですね。

あとがき

Neco Weekly を Zenn の パブリケーション機能 に移行しました。
複数人で記事を執筆できるようになったので、これから活用していきたいと思います。

サイボウズ Necoチーム 😺

Discussion