2016-04-28 9 views
12

私は私のアプリの展開を定義している:ファイルを手動で変更せずにDeploymentを編集するにはどうすればよいですか?

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: myapp-deployment 
spec: 
    replicas: 2 
    template: 
    metadata: 
     labels: 
     app: myapp 
    spec: 
     containers: 
     - name: myapp 
     image: 172.20.34.206:5000/myapp_img:2.0 
     ports: 
     - containerPort: 8080 

今、私は私のアプリの画像2.0〜3.0に更新したい場合は、私がこれを行う:

  1. $ kubectl edit deployment/myapp-deployment
  2. vimが開いています。イメージのバージョンを2.0から3.0に変更して保存します。

どうすれば自動化できますか?コマンドを実行するだけの方法はありますか?ような何か:

$ kubectl edit deployment/myapp-deployment --image=172.20.34.206:5000/myapp:img:3.0 

は私がKubernetes API RESTを使用して思ったが、私はdocumentationを理解していません。

答えて

13

PATCH verbを使用してREST APIで実行できます。しかし、より簡単な方法はkubectl patchです。 the documentationによると

kubectl patch deployment myapp-deployment -p \ 
    '{"spec":{"template":{"spec":{"containers":[{"name":"myapp","image":"172.20.34.206:5000/myapp:img:3.0"}]}}}}' 

、YAMLフォーマットは同様に受け入れられるべき次のコマンドでは、アプリのタグを更新します。問題を示唆するかもしれないがKubernetes issue #458(とくにthis comment)を参照してください。

+0

ありがとう、私はエラーが発生しているが、私は別の質問を投稿するつもりです –

+1

正直言って、私はまだコマンドを試してみる時間がありませんでした。後でやり直してあなたに戻ってきます! –

+0

ありがとうございました; D –

3

両方JSONとYAMLフォーマットが受け入れられるhttp://kubernetes.io/docs/user-guide/kubectl/kubectl_patch/ごとに、はい

を(私は十分な評判を持っていた場合、私はコメントとしてこれを掲載しているでしょう)。

しかし、すべての例ではJSON形式を使用しています。 https://github.com/kubernetes/kubernetes.github.io/issues/458にYAML形式のサンプルを追加します。

+1

私はマニュアルへのリンクとあなたが作成した問題で私の答えを修正しました。ありがとう! –

10

単純なケースでは、リソースの更新既存の容器の画像(複数可)に有用であり得るset imageコマンドがあります。 ポッド(PO)、replicationcontroller(RC)、デプロイメント(展開)、daemonset(DS)、ジョブ、さらにreplicaSet(RS)

kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N

http://kubernetes.io/docs/user-guide/kubectl/kubectl_set_image/

: 可能なリソースは、(大文字と小文字を区別しない)を含みます
$ kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1 
deployment "nginx-deployment" image updated 

http://kubernetes.io/docs/user-guide/deployments/

1

私は最近、ワット展開更新を自動化するツールを構築しています鶏の新しいイメージが使用可能であり、それはKubernetesとヘ​​ルムで動作します:

あなたが唯一の主要なバージョンの更新、readmeの詳細情報を有効にするために keel.sh/policy=majorのようなキールポリシーを使用して展開をラベル付けする必要があり

https://github.com/rusenask/keel

。ヘルムと同様に動作し、追加のCLI/UIは不要です。

関連する問題