TT Lab
はじめる
学ぶ 学習パス コース

CNPA — クラウドネイティブプラットフォームエンジニアリングアソシエイト

APIサーバが実際に拒否するものを見る

TT Labで続きを見る

このラボは本物のAPIサーバーで動きます

CRDは、「APIサーバーがすでに持っている能力を、自分の型に貸してくれる」ものです。 その能力とは、スキーマ検証・デフォルト値・RBAC・監査・watchです。

ところが、偽のクラスターにはその能力がありません。何を入れても受け入れるため、 誤った値が拒否されるところも、デフォルト値が補われるところも見られませんでした。 拒否されてみて初めて、契約が何なのかがわかります。

最初の起動に2分ほどかかります。

目標

開発者に渡すプラットフォームAPIを1つ設計し、それが実際に柵の役割を 果たしているかを確認します。

ステップ

  1. CRDを作成し、APIサーバーがそれを受け入れることを、次のファイルに保存してください: /root/cnpa/crd.txt
  2. スキーマが誤った値を拒否することを、次のファイルに保存してください: /root/cnpa/validate.txt
  3. デフォルト値が補われることを、次のファイルに保存してください: /root/cnpa/defaults.txt
  4. kubectl getで見やすく表示されるように出力列を付けて、次のファイルに保存してください: /root/cnpa/columns.txt
  5. RBACで開発者にできることを定め、次のファイルに保存してください: /root/cnpa/rbac.txt
  6. クォータでリソースの柵を立て、次のファイルに保存してください: /root/cnpa/quota.txt
  7. デプロイ元帳からDORAメトリクスを計算し、次のファイルに保存してください: /root/cnpa/dora.txt
  8. 次のファイルにcrd_kind=、rejected=yes、deploy_freq=の3行と説明を書いてください: /root/cnpa/report.md

参考

自分の型をAPIに登録する

CRDを作成し、APIサーバーがそれを受け入れることを、次のファイルに保存してください: /root/cnpa/crd.txt

group・names・versionsの3つが必要です。servedとstorageも確認しておいてください。

拒否されてみて初めて契約がわかる

スキーマが誤った値を拒否することを、次のファイルに保存してください: /root/cnpa/validate.txt

必須フィールドを抜いてみて、型を間違えてみて、存在しないフィールドを入れてみてください。

抜けた値をAPIサーバーが補う

デフォルト値が補われることを、次のファイルに保存してください: /root/cnpa/defaults.txt

スキーマにdefault:を置くと、保存時点で補われます。kubectl get -o yamlで確認してください。

kubectl getが使いやすいと、実際に使われる

kubectl getで見やすく表示されるように出力列を付けて、次のファイルに保存してください: /root/cnpa/columns.txt

additionalPrinterColumnsをversionsの下に置きます。

開発者にできることを決める

RBACで開発者にできることを定め、次のファイルに保存してください: /root/cnpa/rbac.txt

CRDにも、ほかのリソースとまったく同じようにRBACがかかります。kubectl auth can-i --asで確認してください。

リソースの柵

クォータでリソースの柵を立て、次のファイルに保存してください: /root/cnpa/quota.txt

ResourceQuotaはネームスペース全体の合計を制限し、LimitRangeは個々のPodのデフォルト値と上限を決めます。

メトリクスは計算の仕方で分かれる

デプロイ元帳からDORAメトリクスを計算し、次のファイルに保存してください: /root/cnpa/dora.txt

デプロイ元帳から、4つのメトリクスを自分で計算してください。定義ではなく、何を数えるかが答えを変えます。

何を学んだか

次のファイルにcrd_kind=、rejected=yes、deploy_freq=の3行と説明を書いてください: /root/cnpa/report.md

crd_kind=、rejected=yes、deploy_freq=の3行と説明を書いてください。