Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
oc修补程序替换映像名称错误“;json:无法将对象解组为jsonpatch.Patch类型的Go值;_Json_Kubernetes_Openshift - Fatal编程技术网

oc修补程序替换映像名称错误“;json:无法将对象解组为jsonpatch.Patch类型的Go值;

oc修补程序替换映像名称错误“;json:无法将对象解组为jsonpatch.Patch类型的Go值;,json,kubernetes,openshift,Json,Kubernetes,Openshift,我需要将oc补丁应用于以下部署,更改“image”的de值。但我不能这样做,因为一个错误: 部署YML: root@oc-jump-pod:/# oc get deploy deploy-test -o json { "apiVersion": "extensions/v1beta1", "kind": "Deployment", "metadata": {

我需要将oc补丁应用于以下部署,更改“image”的de值。但我不能这样做,因为一个错误:

部署YML:

root@oc-jump-pod:/# oc get  deploy deploy-test -o json
{
    "apiVersion": "extensions/v1beta1",
    "kind": "Deployment",
    "metadata": {
        "annotations": {
            "deployment.kubernetes.io/revision": "3",
            "meta.helm.sh/release-name": "teste",
            "meta.helm.sh/release-namespace": "sda-test"
        },
        "creationTimestamp": "2020-05-25T07:01:14Z",
        "generation": 23,
        "labels": {
            "app.kubernetes.io/instance": "test",
            "app.kubernetes.io/managed-by": "Helm",
            "app.kubernetes.io/name": "test",
            "app.kubernetes.io/version": "latest",
            "helm.sh/chart": "test-1.0.0"
        },
        "name": "test",
        "namespace": "test-1",
        "resourceVersion": "19316664",
        "selfLink": "/apis/extensions/v1beta1/namespaces/test/deployments/test",
        "uid": "863d7397"
    },
    "spec": {
        "progressDeadlineSeconds": 600,
        "replicas": 1,
        "revisionHistoryLimit": 10,
        "selector": {
            "matchLabels": {
                "app.kubernetes.io/instance": "test",
                "app.kubernetes.io/name": "test"
            }
        },
        "strategy": {
            "rollingUpdate": {
                "maxSurge": "25%",
                "maxUnavailable": "25%"
            },
            "type": "RollingUpdate"
        },
        "template": {
            "metadata": {
                "creationTimestamp": null,
                "labels": {
                    "app.kubernetes.io/instance": "test",
                    "app.kubernetes.io/name": "test"
                }
            },
            "spec": {
                "containers": [
                    {
                        "env": [
                            {
                                "name": "APP_NAME",
                                "value": "test"
                            },
                            {
                                "name": "JAVA_OPTS_EXT",
                                "value": "-Djava.security.egd=file:/dev/./urandom -Dcom.sun.net.ssl.checkRevocation=false  -Djavax.net.ssl.trustStore=/etc/truststore/jssecacerts -Djavax.net.ssl.trustStorePassword=changeit"
                            },
                            {
                                "name": "SPRING_CLOUD_CONFIG_PROFILE",
                                "value": "pre"
                            },
                            {
                                "name": "TZ",
                                "value": "Europe/Madrid"
                            },
                            {
                                "name": "WILY_MOM_PORT",
                                "value": "5001"
                            },
                            {
                                "name": "spring_application_name",
                                "value": "test"
                            },
                            {
                                "name": "spring_cloud_config_uri",
                                "value": "https://config.test.svc.cluster.local"
                            }
                        ],
                        "image": "registry.sdi.dev.weu.azure.paas.cloudcenter.corp/test-dev/test-java:0.0.2",
                        "imagePullPolicy": "Always",
                        "name": "test",
                        "ports": [
                            {
                                "containerPort": 8080,
                                "protocol": "TCP"
                            }
  ],
                        "resources": {
                        ...

我要做的是:

root@oc-jump-pod:/# oc patch deploy push-engine --type='json' -p='{"spec":{"template":{"metadata":{"spec":{"containers":{"image":"registry.sdi.
dev.weu.azure.paas.cloudcenter.corp/test-dev/test:0.0.1"}}}}}}'
Error from server (BadRequest): json: cannot unmarshal object into Go value of type jsonpatch.Patch
这是为了得到值

root@oc-jump-pod:/# oc get deploy push-engine -o=jsonpath='{..image}'
registry.sdi.dev.weu.azure.paas.cloudcenter.corp/test-dev/test-java:0.0.2

我需要这样做,将图像的标记从0.0.2更改为0.0.1(或其他)。可能我还不了解oc补丁,实际上我在oc控制台上手动进行更改。但是这种方法很粗鲁,而且不遵循CI/CD。

用于部署的正确JSON修补程序文档可能如下所示:

[
    {
        "op": "replace",
        "path": "/spec/template/spec/containers/0/image",
        "value": "registry.sdi.dev.weu.azure.paas.cloudcenter.corp/test-dev/test:0.0.1"
    }
]
您的示例不起作用,因为它没有反映原始
yaml
文件的结构。请注意,它包含数组
[…]
,您将其视为仅包含映射
{…}

最后的
oc patch
命令可能如下所示:

oc patch deploy push-engine --type='json' -p '[{ "op": "replace", "path": "/spec/template/spec/containers/0/image", "value": "registry.sdi.dev.weu.azure.paas.cloudcenter.corp/test-dev/test:0.0.1" }]'

适用于
部署的正确JSON修补程序文档可能如下所示:

[
    {
        "op": "replace",
        "path": "/spec/template/spec/containers/0/image",
        "value": "registry.sdi.dev.weu.azure.paas.cloudcenter.corp/test-dev/test:0.0.1"
    }
]
您的示例不起作用,因为它没有反映原始
yaml
文件的结构。请注意,它包含数组
[…]
,您将其视为仅包含映射
{…}

最后的
oc patch
命令可能如下所示:

oc patch deploy push-engine --type='json' -p '[{ "op": "replace", "path": "/spec/template/spec/containers/0/image", "value": "registry.sdi.dev.weu.azure.paas.cloudcenter.corp/test-dev/test:0.0.1" }]'

您可以使用
oc-set-image
,阅读这里的文档
oc-patchdeploy-push-engine-patch={“spec”:{“template”:{“spec”:{“containers”:[{“name”:“,“image”:“image-name:tag”}]}}}}}}
,您也可以尝试一下,谢谢!我将检查oc set image命令以改进管道。您可以使用
oc set image
,阅读此处的文档
oc patchdeploy push engine--patch='{“spec”:{“template”:{“spec”:{“containers”:[{“name”:“,“image”:“image name:tag”}}}}}}}}}},您也可以尝试一下。
,谢谢!我将检查oc set image命令以改进管道您是对的!我使用你的命令,它工作!非常感谢。你说得对!我使用你的命令,它工作!非常感谢。