web-dev-qa-db-ja.com

デプロイされたKubernetesサービスのYAMLを取得しますか?

アプリをKubernetesに実行しようとしていますGoogle Container Engine

アプリは次の場所にあります: https://github.com/Industrial/docker-znc

Dockerfileは、Google Container Registry上のイメージに組み込まれます。

+ボタンを使用して、アプリをKubernetesにデプロイしました。これにはYAMLがありません。

私はSecretKubernetesに必要なPEMファイルに挿入しましたアプリ。

  1. DeploymentServiceおよびポッドは、フォームに入力してKubernetesによって作成されましたか?
  2. SecretPodに使用するにはどうすればよいですか?
59
Industrial

デプロイメント(サービス、ポッド、シークレットなど)のyamlを取得するには:

kubectl get deploy deploymentname -o yaml --export
99
Janos Lenart

秘密に関する2番目の質問については、これはk8sのドキュメントからです。詳細については、 https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets を参照してください。

  1. シークレットを作成するか、既存のシークレットを使用します。複数のポッドが同じシークレットを参照できます。
  2. Pod定義を変更して、spec.volumes []の下にボリュームを追加します。ボリュームに任意の名前を付け、spec.volumes []。secret.secretNameフィールドをシークレットオブジェクトの名前と同じにします。
  3. 秘密が必要な各コンテナにspec.containers []。volumeMounts []を追加します。 spec.containers []。volumeMounts []。readOnly = trueおよびspec.containers []。volumeMounts []。mountPathを、シークレットを表示する未使用のディレクトリ名に指定します。
  4. プログラムがそのディレクトリ内のファイルを検索するように、イメージまたはコマンドライン、あるいはその両方を変更します。シークレットデータマップの各キーは、mountPathの下のファイル名になります。

私はこれを使用しましたが、うまく機能します。

4
JamStar

フォームに入力してKubernetesによって作成された展開、サービス、およびポッドのYAMLを取得するにはどうすればよいですか?

kubectl get deployment,service,pod yourapp -o yaml --export

@Sinaestheticの質問に答える:

完全なクラスター(すべての展開)でそれを行う方法はありますか?

kubectl get deploy --all-namespaces -o yaml --export

このメソッドの問題は、exportに名前空間が含まれていないことです。したがって、多くのリソースを同時にエクスポートする場合は、ネームスペースごとにエクスポートすることをお勧めします。

kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yaml

残念ながらkubernetes まだサポートしていません trueget allコマンドなので、必要なリソースのタイプを手動でリストする必要があります輸出する。リソースタイプのリストを取得するには

kubectl api-resources
3
victortv
  • 上記のように、「-export」は、kubeernetesオブジェクトに対応するマニフェストを取得する1つのオプションです
  • しかし、「-export」はバグがあると考えられ、廃止する提案があります
  • 現在、より良いオプションは、「-o yaml」または「-o json」を実行し、不要なフィールドを削除することです
  • 主な違いは、「-export」はクラスター固有の設定(k8sサービスのクラスターサービスIPなど)を削除することが期待されることです。しかし、この点で矛盾していることがわかりました
2

このコマンドを使用して、サービスのyaml形式を取得します

kubectl get service servicename -o yaml

また、いくつかのファイルにそれを置くことができます

kubectl get service servicename -o yaml >service.yaml

1
Sachin Arote