#Kubernetes
136 件の記事
Certified Kubernetes Security Specialist (CKS) #4: RBAC 最小権限の深掘り (Cluster Hardening)
Certified Kubernetes Security Specialist (CKS) シリーズの 4 番目の記事です。CKA で身につけた RBAC の上に最小権限の原則を重ね、広すぎる Role をどう見つけて狭めるかをセキュリティの観点で深く扱います。wildcard verb/resource の危険、default ServiceAccount 権限の削除、ClusterRoleBinding の乱用を RoleBinding で減らすこと、aggregated ClusterRole の注意点、secrets get・pods/exec・escalate・bind・impersonate のような危険な権限の識別、そして kubectl auth can-i --as で狭めた権限を検証する流れまで整理します。

CI/CD パイプライン
第23章まで整った myshop-api は、新バージョンが入ってくる過程に依然として人が多く介入します。本章はその過程を自動化します。GitHub Actions で OIDC 信頼により静的キーなしに AWS ECR へコンテナイメージをプッシュし、マニフェスト repo の Helm values を自動 commit し、第20章で扱った ArgoCD がその変更を検知してクラスタへ同期する一連の流れを整理します。PR 承認ゲート、dev / prod 分岐、Argo Rollouts カナリア配備、イメージタグの immutability まで併せて扱います。

CNI 深掘り
同じ NetworkPolicy マニフェストが Calico の上では iptables ルールに、Cilium の上では eBPF プログラムに展開されるデータプレーンの深さを扱います。K8s ネットワークモデルの4つの条件、CNI インターフェースの正体、iptables・IPVS・eBPF の3つのデータプレーンモデル、Calico と Cilium の比較、そして CNI 選択の実戦基準までを一連の流れで整理します。

CRD と Operator パターン
K8s API をユーザードメインのオブジェクトで拡張する2つの軸を扱います。CustomResourceDefinition で新しいオブジェクト種類を定義し、controller-runtime ベースの Operator が第1章で見た reconcile loop をそのオブジェクトの上に掛けて K8s の宣言的モデルをドメインまで拡張します。ownerReference・finalizer・status subresource の3つの標準パターンと Kubebuilder・Operator SDK のビルドツールまでを一連の流れで整理します。

DB 連携 — RDS · External Secrets
第22章で外部公開まで作った myshop-api は、データストアのない空の殻です。本章はその空いた場所を埋めます。RDS PostgreSQL を Terraform で立ち上げ、マスターパスワードを AWS Secrets Manager に置き、External Secrets Operator でその秘密を K8s Secret へ自動同期し、IRSA で静的な認証情報なしに権限を付与し、PgBouncer でコネクションプールを載せ、スキーママイグレーションを Helm hook ベースの Job パターンで自動化する流れまでを一連の流れとして整理します。

docker-compose から k8s へ
付録A — Docker / docker-compose まで触れてきた読者が K8s へ移っていくときに詰まる7つの違いを整理します。docker-compose.yml の各キーが K8s のどのリソースに対応するかをマッピング表で示し、小さな web + db の docker-compose.yml を K8s マニフェストへ移す流れをたどり、kompose 自動変換ツールの限界とその次の段階を挙げます。本書の最後の章ですが、Docker まで触れてきた読者には出発点になります。

EKS クラスタセットアップ
AWS EKS の上に本物の運用クラスタを最初から立ち上げる流れを扱います。Terraform で VPC · EKS コントロールプレーン · ノードグループ · IRSA · 必須アドオン (VPC CNI · CoreDNS · kube-proxy · EBS CSI) を一つのコードベースで宣言し、eksctl の素早いセットアップオプション、Karpenter のノードオートスケーリング、そして最初の点検 · コストモデルまでを一つのサイクルで整理します。

GitOps
マニフェストの source of truth を git に置き、クラスタ内のコントローラが git を watch して自動的に同期する運用モデルを扱います。push モデルと pull モデルの違い、GitOps の4原則、ArgoCD の Application CRD・App of Apps・Sync Wave、Flux の GitRepository・Kustomization・HelmRelease、ディレクトリ構造のパターン、そして秘密を git に置く3つの標準ツールまでを一連の流れで整理して3部を締めくくります。

kubectl デバッグパターン
5部 (運用 · デバッグ · コスト) の最初の章です。運用クラスタで最もよく出会う事故 (CrashLoopBackOff、OOMKilled、ImagePullBackOff、Pending、Service に届かない) の診断ツリーを集約します。describe · events · logs の3つのコマンドから出発し、kubectl debug の ephemeral container、ネットワーク診断パターン、19章の可観測性スタックとの連携まで、新人 SRE の最初の参照資料になるマニュアルとして整理します。

RBAC / NetworkPolicy / ResourceQuota
1つのクラスタに複数のチーム · 環境が一緒に住むマルチテナント運用の隔離を作る3つのポリシーオブジェクトを扱います。RBAC の Role · ClusterRole · ServiceAccount · RoleBinding モデル、NetworkPolicy の default-deny パターンと CNI 依存、ResourceQuota と LimitRange の対の関係までを一連の流れで整理しながら2部を締めくくります。

RBAC / ServiceAccount 深掘り
第14章 RBAC の基本の上に、運用クラスタで出会う深さをもう一層重ねます。ClusterRole をラベルで束ねる Aggregated ClusterRole、別の主体の権限で呼び出す Impersonation、ServiceAccount トークンが永続 Secret から有効期限・audience・rotation を備えた projected token へ変わった流れ、そして EKS の IRSA・GKE の Workload Identity で K8s ServiceAccount をクラウド IAM に対応づけるモデルまでを整理します。

アップグレード戦略
5部の最後の章です。K8s マイナーリリース (14か月サポート) を安全に追っていく運用マニュアルです。コントロールプレーン → データプレーン (ノード) → アドオンの順序、deprecated API の検出 (pluto · kubent · apiserver メトリクス)、マニフェスト / Helm / Operator CR の API バージョン移行、EKS のノードグループ / Karpenter NodePool drift の流れ、ノード drain の安全装置 (PDB · terminationGracePeriodSeconds)、blast radius の最小化、ロールバックシナリオ、RPO / RTO 別のバックアップ選択、そしてアップグレード前1週 / 当日 / 後1週のチェックリストまでを一連の流れで扱います。