2. マニフェスト ファイルによる Pod の操作
このラボでは、YAML の記法やマニフェスト ファイルによる Pod の作成について学習します。
テキストを参照しながら各問題にチャレンジしてください。
必要があればウェブで調べても構いません。
ステップ 1: 問題 1/17
YAML でキーとバリューを区切るために使われるのは以下のどれですか。
- ハイフン ( - )
- セミコロン ( ; )
- カンマ ( , )
- コロン ( : )
Answer
コロン ( : )
ステップ 2: 問題 2/15
以下の YAML スニペットに配列のキーはいくつありますか。
Fruits:
- Orange
- Apple
- Banana
Vegetables:
- Carrot
- CauliFlower
- Tomato
- 8
- 2
- 6
- 3
Answer
2
ステップ 3: 問題 3/15
以下のうち YAML についての正しい記述はどれですか。
- A. 辞書 (マッピング) は順序なしのコレクションであるのに対して配列 (シーケンス) は順序ありのコレクションである
- B. 辞書 (マッピング) は順序ありのコレクションであるのに対して配列 (シーケンス) は順序なしのコレクションである
- C. 辞書 (マッピング) と配列 (シーケンス) は両方とも順序ありのコレクションである
- D. 辞書 (マッピング) と配列 (シーケンス) は両方とも順序なしのコレクションである
Answer
A. 辞書 (マッピング) は順序なしのコレクションであるのに対して配列 (シーケンス) は順序ありのコレクションである
ステップ 4: 問題 4/15
/root/playbooks/ ディレクトリの下に question4.yaml という yaml ファイルが用意されています。
このファイルには property1 というキーと value1 というバリューが記載されています。
このファイルに property2 というキーと value2 というバリューを追加してください。
Hints
/root/playbooks/question4.yaml を編集し、property2 というキーと value2 というバリューのペアを追加します。
Solution
以下の内容にファイルを更新します。
property1: value1
property2: value2
ステップ 5: 問題 5/15
/root/playbooks/ ディレクトリの下に question5.yaml という yaml ファイルが用意されています。
このファイルに以下の情報が保存されるように、必要なプロパティを追加してください。
- name = apple
- color = red
- weight = 90g
Solution
/root/playbooks/question5.yaml を以下の内容に更新します。
name: apple
color: red
weight: 90g
ステップ 6: 問題 6/15
/root/playbooks/ ディレクトリの下に question6.yaml という yaml ファイルが用意されています。
このファイルには employee という名前の辞書が保存されています。
以下の従業員情報が保存されるように必要なプロパティを追加してください。
| Key/Property | Value |
|---|---|
| name | john |
| gender | male |
| age | 24 |
Solution
/root/playbooks/question6.yaml を以下の内容に更新します。
employee:
name: john
gender: male
age: 24
ステップ 7: 問題 7/15
/root/playbooks/ ディレクトリの下に question7.yaml という yaml ファイルが用意されています。
このファイルの従業員情報に、name や gender 以外に以下の情報を保存するように、address という辞書を追加してください。
| Key/Property | Value |
|---|---|
| city | shinjuku |
| prefecture | tokyo |
| country | japan |
Solution
/root/playbooks/question7.yaml を以下の内容に更新します。
employee:
name: john
gender: male
age: 24
address:
city: shinjuku
prefecture: tokyo
country: japan
ステップ 8: 問題 8/15
/root/playbooks/ ディレクトリの下に question8.yaml という yaml ファイルが用意されています。
このファイルには配列の要素として apple が 1 つだけ保存されています。
合計 4 つの apple が保存されるように配列の要素を追加してください。
Solution
/root/playbooks/question8.yaml を以下の内容に更新します。
- apple
- apple
- apple
- apple
ステップ 9: 問題 9/15
/root/playbooks/ ディレクトリの下に question9.yaml という yaml ファイルが用意されています。
このファイルに apple orange banana についての情報を辞書の配列として保存します。apple と同じように orange と banana について以下の情報を追加してください。
| orange | |
|---|---|
| color | orange |
| weight | 90g |
| banana | |
|---|---|
| color | yellow |
| weight | 150g |
Solution
/root/playbooks/question9.yaml を以下の内容に更新します。
- name: apple
color: red
weight: 100g
- name: orange
color: orange
weight: 90g
- name: banana
color: yellow
weight: 150g
ステップ 10: 問題 10/15
/root/playbooks/ ディレクトリの下に question10.yaml という yaml ファイルが用意されています。
このファイルに複数の従業員情報を記録できるようにしたいです。employee という名前の辞書を、employees (複数形) という名前の配列に書き直してください。
Solution
/root/playbooks/question10.yaml を以下の内容に更新します。
employees:
- name: john
gender: male
age: 24
ステップ 11: 問題 11/15
/root/playbooks/ ディレクトリの下に question11.yaml という yaml ファイルが用意されています。
このファイルには、設問 10 で更新した内容と同じ内容が含まれています。
以下の内容で 2 人目の従業員の情報を追加してください。
| Key/Property | Value |
|---|---|
| name | sarah |
| gender | female |
| age | 28 |
Solution
/root/playbooks/question11.yaml を以下の内容に更新します。
employees:
- name: john
gender: male
age: 24
- name: sarah
gender: female
age: 28
ステップ 12: 問題 12/15
/root/playbooks/ ディレクトリの下に question12.yaml という yaml ファイルが用意されています。
このファイルに以下の給与明細 (payslips) の情報を追加してください。
住所 (address) は辞書ですが、給与明細 (payslips) は各月 (month) とその金額 (amount) を要素にした配列で記載してください。
payslips
| month | amount |
|---|---|
| june | 1400 |
| july | 1600 |
| august | 2400 |
Solution
/root/playbooks/question12.yaml を以下の内容に更新します。
employee:
name: john
gender: male
age: 24
address:
city: edison
state: "new jersey"
country: "united states"
payslips:
- month: june
amount: 1400
- month: july
amount: 1600
- month: august
amount: 2400
ステップ 13: 問題 13/15
次の問題では Pod のマニフェスト ファイルを作成します。
マニフェスト ファイルを一から作成せずに済ませる Tips として、--dry-run=client -o yaml を使用する方法があります。
kubectl run lab-1 --image nginx --dry-run=client -o yaml > lab-1.yaml を実行してみてください。
実際に Pod が作成されることはありませんが、Pod のマニフェスト ファイルが lab-1.yaml に出力されます。lab-1.yaml を開いて、Pod のマニフェスト ファイルを確認してみてください。
このようにベースとなるマニフェスト ファイルを作成して必要なプロパティを追加・削除することで、一から書かずにマニフェスト ファイルを作成することができます。
この方法は Pod だけでなく Deployment などの他のリソースでも使用できます。
また、すでに作成済みの Pod がある場合は、kubectl get pod POD_NAME -o yaml > pod.yaml を実行して、Pod のマニフェスト ファイルを作成することもできます。
ステップ 14: 問題 14/15
redis-definition.yaml という名前のマニフェスト ファイルを作成し、以下の設定で Pod を作成してください。
Pod 名:redis
イメージ:redis123 (不適切なイメージ名ですがこれを指定します)
Hints
マニフェスト ファイルを作成し、kubectl apply コマンドを使用して Pod を作成します。
Solution
kubectl run redis --image=redis123 --dry-run=client -o yaml > redis-definition.yaml を実行し、redis-definition.yaml という名前のマニフェスト ファイルを作成します。kubectl apply -f redis-definition.yaml を実行し、Pod を作成します。
ステップ 15: 問題 15/15
いま作成した Pod redis のイメージを redis に変更してください。
(イメージを変更して Pod が running 状態になることを確認してください)
Pod 名:redis イメージ:redis
Hints
Pod のマニフェスト ファイルを更新して kubectl apply コマンドを使用するか、kubectl edit コマンドを使用します。
Solution
kubectl edit pod redis を実行してイメージを redis に変更します。
または、redis-definition.yaml でイメージを redis に変更し、kubectl apply -f redis-definition.yaml を実行します。
完了
チャレンジ完了!
お疲れ様でした!