|
| 1 | +--- |
| 2 | +title: kubectlの使用規則 |
| 3 | +content_type: concept |
| 4 | +--- |
| 5 | + |
| 6 | +<!-- overview --> |
| 7 | +`kubectl`の推奨される使用規則です。 |
| 8 | + |
| 9 | +<!-- body --> |
| 10 | + |
| 11 | +## 再利用可能なスクリプトでの`kubectl`の使用 |
| 12 | + |
| 13 | +スクリプトでの安定した出力のために: |
| 14 | + |
| 15 | +* `-o name`, `-o json`, `-o yaml`, `-o go-template`, `-o jsonpath` などの機械指向の出力形式のいずれかを必要します。 |
| 16 | +* バージョンを完全に指定します。例えば、`jobs.v1.batch/myjob`のようにします。これにより、kubectlが時間とともに変化する可能性のあるデフォルトのバージョンを使用しないようにします。 |
| 17 | +* コンテキストや設定、その他の暗黙的な状態に頼ってはいけません。 |
| 18 | + |
| 19 | +## ベストプラクティス |
| 20 | + |
| 21 | +### `kubectl run` |
| 22 | + |
| 23 | +`kubectl run`がインフラのコード化を満たすために: |
| 24 | + |
| 25 | +* イメージにバージョン固有のタグを付けて、そのタグを新しいバージョンに移さない。例えば、`:latest`ではなく、`:v1234`、`v1.2.3`、`r03062016-1-4`を使用してください(詳細は、[Best Practices for Configuration](/docs/concepts/configuration/overview/#container-images)を参照してください)。 |
| 26 | +* パラメーターが多用されているイメージをスクリプトでチェックします。 |
| 27 | +* `kubectl run` フラグでは表現できない機能を、ソースコントロールでチェックした設定ファイルに切り替えます。 |
| 28 | + |
| 29 | +`dry-run=client` フラグを使用すると、実際に送信することなく、クラスターに送信されるオブジェクトを確認することができます。 |
| 30 | + |
| 31 | +{{< note >}} |
| 32 | +すべての`kubectl run`ジェネレーターは非推奨です。ジェネレーターの[リスト](https://v1-17.docs.kubernetes.io/docs/reference/kubectl/conventions/#generators)とその使用方法については、Kubernetes v1.17のドキュメントを参照してください。 |
| 33 | +{{< /note >}} |
| 34 | + |
| 35 | +#### Generators |
| 36 | +`kubectl create --dry-run=client -o yaml`というkubectlコマンドで以下のリソースを生成することができます。 |
| 37 | + |
| 38 | +* `clusterrole`: ClusterRoleを作成します。 |
| 39 | +* `clusterrolebinding`: 特定のClusterRoleに対するClusterRoleBindingを作成します。 |
| 40 | +* `configmap`: ローカルファイル、ディレクトリ、またはリテラル値からConfigMapを作成します。 |
| 41 | +* `cronjob`: 指定された名前のCronJobを作成します。 |
| 42 | +* `deployment`: 指定された名前でDeploymentを作成します。 |
| 43 | +* `job`: 指定された名前でJobを作成します。 |
| 44 | +* `namespace`: 指定された名前でNamespaceを作成します。 |
| 45 | +* `poddisruptionbudget`: 指定された名前でPodDisruptionBudgetを作成します。 |
| 46 | +* `priorityclass`: 指定された名前でPriorityClassを作成します。 |
| 47 | +* `quota`: 指定された名前でQuotaを作成します。 |
| 48 | +* `role`: 1つのルールでRoleを作成します。 |
| 49 | +* `rolebinding`: 特定のロールやClusterRoleに対するRoleBindingを作成します。 |
| 50 | +* `secret`: 指定されたサブコマンドを使用してSecretを作成します。 |
| 51 | +* `service`: 指定されたサブコマンドを使用してServiceを作成します。 |
| 52 | +* `ServiceAccount`: 指定された名前でServiceAccountを作成します。 |
| 53 | + |
| 54 | +### `kubectl apply` |
| 55 | + |
| 56 | +* リソースの作成や更新には `kubectl apply` を使用できます。kubectl applyを使ったリソースの更新については、[Kubectl Book](https://kubectl.docs.kubernetes.io)を参照してください。 |
| 57 | + |
| 58 | + |
0 commit comments