Kubernetes

KustomizeのJSON Patchに苦しんでいる方、Jsonnetを使ってみませんか?

こんにちは、株式会社はてなでアプリケーションエンジニアとしてアルバイトをしている id:walnuts1018 です。 この記事は はてなエンジニア Advent Calendar 2025 の28日目です。昨日の記事は、 id:k1s1eee さんの 複数AIプロバイダを一元管理できる LiteLLM…

controller-runtimeを使ったKubernetes Operatorで、CRDの存在を確認して動的に管理対象のリソースを設定したいとき

私が管理しているwalnuts1018/cloudflare-tunnel-operator というKubernetes Operatorでは、DeploymentやSecretだけではなく、ServiceMonitorも自動的に作られるようになっています。 しかし、Deploymentなどと違ってServiceMonitorはCustom Resourceなので…

LokiでRedis ClusterをLB越しに利用しているときに`MOVED`のエラーが出たら?

Grafana LokiのCacheとしてRedisを使い始めた。 Redisは、OT-CONTAINER-KIT/redis-operator を使ってRedis Clusterとして構築した。 あとはLokiのcache_config.redisにエンドポイントを指定すればOK。 github.com しかし、動かしてみるとlevel=error ts=2025…

Manifest Paths Annotationを利用してArgo CDのReconcileを減らす

自宅のKubernetesクラスタのArgo CDは100以上のApplicationを管理しており、1core / 1GB程度のリソースを常時占有しています。 特に、全てのManifestをJsonnetで記述しているため、Manifestの生成が重く、Reconcileの遅延も大きい状況が続いています。 リソ…

KUINSでcert-managerを動かす

KUINS (Kyoto University Integrated information Network System)内でcert-managerを使ってDNS-01 Challengeを動かした時にハマったのでメモ。 KUINSでは、Port 53のUDPをブロックしているため、1.1.1.1などの外部DNSにアクセスできず、内部DNSのみ利用でき…

FluxCDのHelmReleaseでinstall後のリソースの差分を出す

目的 自宅 k8s の manifest を管理するリポジトリであるwalnuts1018/infraでは、renovate を用いて、HelmRelease の自動更新を行っています。 FluxCD の HelmRelease リソースには、Chart の Version を指定する項目があるのでそこが更新されていきます。 し…

FluxCDのImageUpdateAutomationをPull Requestベースにする & Auto Mergeを設定する

目的 FluxCD には、Manifest 中の Image フィールドを自動的に更新してくれる機能があります。 とても便利な機能なのですが、公式ドキュメントの通りに ImageUpdateAutomationを設定すると、mainブランチに直接コミットされていきます。 そうではなくて、Ren…

kubectl applyでしかインストールできないアプリをFluxCD×Renovateで管理する

目的 walnuts.devのk8sクラスタは、FluxCDを使って管理されています。 github.com 多くのアプリケーションはFluxCD特有のHelm用設定ファイルやdeployment.yamlなどのManifestをコミットすることで本番環境に自動適用される、という運用になっています。 しか…

Walnuts.dev を支える技術 (物理環境/ネットワーク編)

Walnuts.dev を支える技術 (物理環境/ネットワーク編)