2017-07-05 7 views
1

私はKuensnetes Client for Goを使用して、Openshiftの既存のデプロイメントを更新しようとしています。私は3にレプリカを更新するには、次のJSONを使用しています:Kubernetesクライアントfor Go - エラーのみエンコードされたマップまたは配列を構造体にデコードすることができます

JSON:

{ 
    "kind": "Deployment", 
    "spec": { 
    "template": { 
     "spec": { 
     "containers": { 
      "image": "docker.fmr.com\/fmr-pr000105\/testcontainer:1.0.0", 
      "name": "testcontainer", 
      "resources": { 
      "requests": { 
       "cpu": "50m" 
      }, 
      "limits": { 
       "cpu": "50m", 
       "memory": "50M" 
      } 
      }, 
      "ports": { 
      "protocol": "TCP", 
      "name": "test-con-http", 
      "containerPort": 22 
      } 
     } 
     }, 
     "metadata": { 
     "labels": { 
      "app": "testcontainer" 
     } 
     } 
    }, 
    "replicas": 3 
    }, 
    "apiVersion": "extensions\/v1beta1", 
    "metadata": { 
    "name": "testcontainer" 
    } 
} 

しかし、エラーを取得し続ける:

only encoded map or array can be decoded into a struct 

私は次のコードを使用しています:

import (
"fmt" 
"flag" 
"k8s.io/client-go/tools/clientcmd" 
"k8s.io/client-go/kubernetes" 
apiv1 "k8s.io/client-go/pkg/api/v1" 

"k8s.io/client-go/pkg/api" 
"k8s.io/client-go/pkg/apis/extensions" 
"k8s.io/client-go/pkg/apis/extensions/v1beta1" 

"bufio" 
"os" 

) 

func main() { 
    var jsonBody []byte 
    jsonBody = rteMockedUp.GetJsonBody() 
    d := api.Codecs.UniversalDecoder() 
    obj, _, err := d.Decode(jsonBody, nil, nil) 
    if err != nil { 
     log.Fatalf("could not decode json: %s\n%s", jsonBody, err) 
    } 
    src := obj.(*extensions.Deployment) 
    dst := &v1beta1.Deployment{} 
    err = api.Scheme.Convert(src,dst,0) 
    if err != nil { 
     log.Fatalf("failed to convert: %s", err) 
    } 
    updateStatus, err := deploymentsClient.Update(dst) 
    if err != nil { 
     log.Fatalf("Update failed %s", err) 
    } 
} 

ここにエラーがスローされます。

obj, _, err := d.Decode(jsonBody, nil, nil) 

JSONに問題はありますか?

+0

「k8s.io/client-go/pkg/api」のgodocを教えてもらえますか?私は 'api.Codecs.UniversalDecoder()'のgodocを見つけることができませんでした。私はレポ 'https:// github.com/kubernetes/client-go/tree/master/pkg'情報を調べました。 – jeevatkm

答えて

3

通常、これが発生すると、定義に何か問題があることを意味します。あなたの場合、containersはオブジェクトではなく配列でなければなりません。

関連する問題