kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

Kubernetes

CKS 対策にもおすすめ /「Docker/Kubernetes 開発・運用のためのセキュリティ実践ガイド」を読んだ

コンテナワークロードにおけるセキュリティ対策の理解を深めるため「Docker/Kubernetes 開発・運用のためのセキュリティ実践ガイド」を読んだ.実は本書は 2021年7月頃 に1度読み終わっていたけど,実際に気になった部分を試したり,CKS (Certified Kubernet…

Kubernetes 関連のエントリー資格 KCNA (Kubernetes and Cloud Native Associate) に合格した

CNCF (Cloud Native Computing Foundation) の Kubernetes 関連資格 KCNA (Kubernetes and Cloud Native Associate) に合格した! ついに「4冠」になったー まだまだ KCNA の日本語情報は少なく,資格の普及も兼ねて紹介記事としてまとめておこうと思う. w…

Kubernetes の Service で「環境変数」を使ったサービスディスカバリを試す

Kubernetes の Service ドキュメントを読み直していたら「サービスディスカバリ」のモードとして「環境変数」と「DNS」をサポートしていると書いてあった.一般的によく使うのは「DNS」で {ServiceName}.{NamespaceName}.svc.cluster.local というレコードで…

kubectl で Taint を一覧するコマンド例

Kubernetes でノードの Taint を確認するときに「一覧する」コマンドがなくて困るときがある.--show-labels オプションのように --show-taints オプションがあったら良いのに!例えば kubectl describe node xxx | grep Taints コマンドを実行すれば「ノー…

CKS (Certified Kubernetes Security Specialist) に合格した : 勉強方法をまとめる

Kubernetes の資格 CKS (Certified Kubernetes Security Specialist) に合格した やったー!Kubernetes 関連は3個目! 今回の記事では「勉強方法」をまとめようと思う. www.cncf.io 時系列で書くと,2021年2-3月に CKAD (Certified Kubernetes Application…

Kubernetes と Falco を組み合わせて脅威検出に入門する

Kubernetes でコンテナワークロードの脅威検出として使える「Falco」に入門する.CNCF (Cloud Native Computing Foundation) で Incubating に位置しているプロジェクトで,今回は実際に Falco を使って Pod に対する操作(振る舞い)を検出したり,独自ルー…

Flux v2 で Image Ops を実現する「自動イメージ更新機能」を試した

GitOps ソフトウェアの Flux v1 にはイメージレジストリを監視してイメージタグを自動的に最新化する「Automate image updates(自動イメージ更新)機能」が組み込まれている.別名で「Image Ops」と言ったりもする.具体的には Deployment YAML などの anno…

Pod でルートファイルシステムを読み取り専用にする securityContext.readOnlyRootFilesystem

Kubernetes で Pod(正確にはコンテナ単位)に securityContext.readOnlyRootFilesystem: true を設定すると,ルートファイルシステムを読み取り専用にして書き込み操作を抑止できる.アプリケーションのセキュリティ対策として使える.補足をすると Kuberne…

kubelet が他ノードのラベルを操作しないように制限できる NodeRestriction を試した

Kubernetes で有効化できる Admission Plugin である「NodeRestriction」の動作確認をした.簡単にまとめておく! 「NodeRestriction」は kubelet に対して Node / Pod の操作範囲を制限できる.具体例を挙げると kubelet によるラベル操作を自ノードに制限…

Kubernetes と AppArmor を組み合わせてファイル操作を制限する

AppArmor (Application Armor) とは Linux Security Modules の1つで,プログラムに対して「ファイル操作」や「マウント操作」などを制限する.詳しくは以下のドキュメントに載っている. ubuntu.com コンテナワークロードのセキュリティ対策として,AppArmo…

便利な Kubernetes マニフェスト用エディタ「Monokle」

最近「Monokle」を使っている.Monokle(モノクレ)は「Kubernetes マニフェスト用エディタ」とも言えるアプリで,2週間ほど使って操作にも慣れてきたので紹介する!macOS でも Windows でもアプリをダウンロードすればすぐに使えるぞ! github.com 機能 ☸️ …

Descheduler for Kubernetes : 戦略に違反する Pod を他のノードに移動する

Kubernetes を使っていると,運用面で起動中の Pod を他のノードに移動(再スケジューリング)したくなる場面がある.以下に具体的な例を挙げる.理由としては,Kubernetes では kube-scheduler によって Pod を起動する前にノードが決まる仕組み(スケジュ…

Pod Topology Spread Constraints : Pod を Multi AZ 配置する

Kubernetes で「Pod Topology Spread Constraints」を使うと Pod をスケジューリングするときの制約条件を柔軟に設定できる.今回は Zone Spread (Multi AZ) を試す!詳しくは以下のドキュメントに載っている! kubernetes.io spec.topologySpreadConstraint…

Kubeval で kustomization.yaml を対象外にする

Kubeval で Kubernetes マニフェストを検査する場合に kustomize を使っていると,以下のように kustomization.yaml でエラーになってしまう.kustomization.yaml には kind フィールドがなく,Kubeval の対象外にしたい! $ kubeval --version Version: 0.1…

kubectl や kube-apiserver など Kubernetes バイナリを checksum で検証する

以下のドキュメントを読んでいたら kubectl コマンド(バイナリファイル)をダウンロードした後に checksum を使って検証(改ざんなし)をする手順が載っていた.kubectl に限定する必要はなく kube-apiserver などにも適用できる.さっそく試していく! kub…

Helmfile で kustomize プロジェクトをデプロイする機能を試した

Helmfile のドキュメントを読んでいたら Advanced Features として「Deploy Kustomization with Helmfile(Helmfile で kustomize をデプロイする)」という機能が載っていた.最初はどういう意味?と疑問だったけど,簡単に言うと helmfile apply コマンド…

Helmfile の「テンプレート機能」を試した

前回の記事では Helmfile に入門した!Helm Chart を宣言的に管理することができて便利だった 引き続き Helmfile を試していて,GitHub に載っている「The Helmfile Best Practices Guide」を読んでいたら「テンプレート機能」が紹介されていた.Helmfile で…

Helmfile で Helm Chart を宣言的に管理する

Helm を使うと Kubernetes クラスタ上に簡単にアプリケーションなどをインストールできる.そして Helm Chart は Artifact Hub で確認できる.また values.yaml と組み合わせれば Helm Chart のデフォルト設定を変更することもできる.しかし helm コマンド…

Deployment の maxUnavailable と maxSurge : ロールアウト中の割合を設定する

Kubernetes で Deployment を使うと Pod を安全にデプロイ(ロールアウト)できる.そのときに更新する Pod の割合として Max Unavailable と Max Surge という設定値があり,デフォルト値は以下のようにドキュメントに書いてある.今回は動作確認をしながら…

Argo CD で kustomize プロジェクトを GitOps 化する

Argo CD は kustomize をサポートしているため,簡単に kustomize プロジェクトを GitOps 化できる.さっそく試していく! argo-cd.readthedocs.io 検証環境 前回書いた記事で使った kustomize プロジェクトを使う. Namespace + Service + Deployment (ngin…

kustomize で patchesStrategicMerge を使わずに簡単に replicas と images を変更する

今まで kustomize を使って Deployment の replicas を変更するときなどは kustomization.yaml に patchesStrategicMerge を設定していた.例えば,1年前に kustomize に入門したときに書いた以下の記事でもそういう手順になっている. kakakakakku.hatenabl…

Kubernetes と OPA を組み合わせて Deployment の spec.replicas に対して「最低個数」を制限する

前回の記事では Kubernetes と OPA (Open Policy Agent) を組み合わせて「ラベル強制」を試した.OPA を使ってできることをより把握するために,今回は Deployment の spec.replicas に対して「最低個数」を制限できるようにする.なお OPA のインストール手…

Kubernetes と OPA を組み合わせて Namespace と Pod の「ラベル強制」を試した

今回は Kubernetes と OPA (Open Policy Agent) を組み合わせて「ラベル強制」を試す. OPA Gatekeeper をインストールする まず,Kubernetes クラスターに OPA Gatekeeper をインストールする.今回は OPA のドキュメントに載っている kubectl apply コマン…

kube-apiserver で「匿名リクエスト」を無効化する : --anonymous-auth=false

Kubernetes の kube-apiserver では,デフォルトで「匿名リクエスト」機能が有効になっている(正確な条件は以下のドキュメントに載っている).今回は「匿名リクエスト」機能の動作確認と kube-apiserver のセキュリティ対策として「匿名リクエスト」機能の…

Secret の自動マウントをオプトアウトするかどうか : automountServiceAccountToken フィールド

Kubernetes のセキュリティ対策として,Service Account と Pod に設定できる automountServiceAccountToken フィールド(Secret の自動マウントをオプトアウトするかどうか)の動作確認をした.とは言え,Service Account と Secret の関係性なども整理する…

Kubernetes と seccomp を組み合わせてシステムコールを制限する

前回の記事では seccomp (Secure computing mode) に入門するために「Docker と seccomp」を組み合わせて試した.docker run コマンドの --security-opt オプションを使って seccomp プロファイルを指定した. kakakakakku.hatenablog.com 今回は「Kubernete…

Artifact Hub で Helm chart のテンプレートを検索できる新機能「Helm charts templates explorer」

Helm chart を検索するときなどに使う Artifact Hub で,2021年3月頃から新機能「Helm charts templates explorer」を使える.Twitter @cncfartifacthub では 3/5 にアナウンスされていたまた GitHub Releases を見ると,3/16 にリリースされた v0.17.0 の C…

2021年2-3月に CKAD と CKA を受験した / 受験 Tips と 勉強方法をまとめる

2021年2-3月に Kubernetes の資格 CKAD (Certified Kubernetes Application Developer) と CKA (Certified Kubernetes Administrator) を受験した.3年後に更新をするであろう自分のためにも勉強方法をまとめておく.当たり前だけど,出題に関する内容は書か…

kube-capacity コマンドを使って Pod のリソース値をノード別にシンプルに表示する

Kubernetes では Pod にリソース値(要求 : Requests と 制限 : Limits)を設定できる.設定値は kubectl describe コマンドを使って確認できるし,使用率は kubectl top コマンドを使って確認できるけど,今回紹介する CLI「kube-capacity」を使うと,Pod …

Network Policy をわかりやすく学べる「Kubernetes Network Policy Recipes」

GitHub に公開されている「Kubernetes Network Policy Recipes」を使うと,Kubernetes の Network Policy をわかりやすく学べる.現時点だと「計14種類」の Network Policy レシピ(サンプル)が載っていて,実際に使う機会がありそうな設定も多くて参考にな…