• DevOps
  • devops-argocd-dex-server CrashLoopBackOff

创建部署问题时,请参考下面模板,你提供的信息越多,越容易及时获得解答。如果未按模板创建问题,管理员有权关闭问题。
确保帖子格式清晰易读,用 markdown code block 语法格式化代码块。
你只花一分钟创建的问题,不能指望别人花上半个小时给你解答。

操作系统信息
虚拟机:Centos7.9,8C/16G

Kubernetes版本信息
kubectl version:v1.26.5

容器运行时
crictl version:0.1.0

KubeSphere版本信息
在线安装。 使用kk安装。

[root@master-01 kubekey]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

master-01 Ready control-plane 153d v1.26.5

master-02 Ready control-plane 153d v1.26.5

master-03 Ready control-plane 153d v1.26.5

node-01 Ready worker 153d v1.26.5

node-02 Ready worker 153d v1.26.5

node-03 Ready worker 153d v1.26.5

问题是什么
报错日志是什么,最好有截图。

devops-argocd-dex-server-6c5bdbb886-b7zrc 0/1 CrashLoopBackOff 413 (81s ago) 21h

kubectl describe pod devops-argocd-dex-server-6c5bdbb886-b7zrc -n argocd
`Name: devops-argocd-dex-server-6c5bdbb886-b7zrc
Namespace: argocd
Priority: 0
Service Account: argocd-dex-server
Node: node-01/10.233.1.53
Start Time: Tue, 02 Jan 2024 10:47:03 +0800
Labels: app.kubernetes.io/component=dex-server
app.kubernetes.io/instance=devops
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=argocd-dex-server
app.kubernetes.io/part-of=argocd
app.kubernetes.io/version=v2.30.2
helm.sh/chart=argo-cd-4.4.0
pod-template-hash=6c5bdbb886
Annotations: cni.projectcalico.org/containerID: 246004474302819d9cf74cb3679b946ac9bee47469e33d9341400411976286bd
cni.projectcalico.org/podIP: 10.233.126.5/32
cni.projectcalico.org/podIPs: 10.233.126.5/32
Status: Running
IP: 10.233.126.5
IPs:
IP: 10.233.126.5
Controlled By: ReplicaSet/devops-argocd-dex-server-6c5bdbb886
Init Containers:
copyutil:
Container ID: containerd://e400bb89e21076a077a2d830ed42615642964e7b72698d4a481aaabe94326a6e
Image: registry.cn-beijing.aliyuncs.com/kubesphereio/argocd:v2.3.3
Image ID: registry.cn-beijing.aliyuncs.com/kubesphereio/argocd@sha256:dd738f234fcdb0aac8631a0fd1aafbbcd86f936480b06e8377b033ef7a764f71
Port: <none>
Host Port: <none>
Command:
cp
-n
/usr/local/bin/argocd
/shared/argocd-dex
State: Terminated
Reason: Completed
Exit Code: 0
Started: Tue, 02 Jan 2024 10:47:04 +0800
Finished: Tue, 02 Jan 2024 10:47:04 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/shared from static-files (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-kbmgw (ro)
Containers:
dex-server:
Container ID: containerd://c24522948351a4d211f7c7dd6ca07a844d667e5d61ac53148b2b23e124f19eb0
Image: registry.cn-beijing.aliyuncs.com/kubesphereio/dex:v2.30.2
Image ID: registry.cn-beijing.aliyuncs.com/kubesphereio/dex@sha256:27cf2e8644f2ea1ebc6de711b0ace4b5ee2d1f442e148eabbaa8c68308062475
Ports: 5556/TCP, 5557/TCP, 5558/TCP
Host Ports: 0/TCP, 0/TCP, 0/TCP
Command:
/shared/argocd-dex
rundex
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 2
Started: Wed, 03 Jan 2024 08:16:34 +0800
Finished: Wed, 03 Jan 2024 08:17:13 +0800
Ready: False
Restart Count: 409
Liveness: http-get http://:metrics/healthz/live delay=10s timeout=10s period=10s #success=1 #failure=3
Readiness: http-get http://:metrics/healthz/ready delay=10s timeout=10s period=10s #success=1 #failure=3
Environment: <none>
Mounts:
/shared from static-files (rw)
/tmp from tmp-dir (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-kbmgw (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
tmp-dir:
Type: EmptyDir (a temporary directory that shares a pod’s lifetime)
Medium:
SizeLimit: <unset>
static-files:
Type: EmptyDir (a temporary directory that shares a pod’s lifetime)
Medium:
SizeLimit: <unset>
kube-api-access-kbmgw:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
Warning BackOff 5m15s (x4931 over 21h) kubelet Back-off restarting failed container dex-server in pod devops-argocd-dex-server-6c5bdbb886-b7zrc_argocd(f528affd-a613-404e-94e1-f9b725b6150b)
Warning Unhealthy 21s (x1230 over 21h) kubelet Liveness probe failed: Get “http://10.233.126.5:5558/healthz/live”: dial tcp 10.233.126.5:5558: connect: connection refused
`

    我的集群环境安装也是同样的报错信息。

    环境版本如下:

    k8s version: v1.23.17

    docker version: 24.0.6

    10 天 后
    1 个月 后

    这么解决的呢,devops一直启用不成功

      p-m-q devops 启用不成功有什么报错吗 ? 还是只有这个 devops-argocd-dex-server-xxxx pod 一直 CrashLoopBackOff ?

        yudong

        我是启用devops,但是启用失败。我是allinone在线安装,安装后启用devops,没有启用成功。帮忙分析下,报错如下

        PLAY RECAP *********************************************************************

        localhost : ok=25 changed=14 unreachable=0 failed=0 skipped=22 rescued=0 ignored=0

        Start installing monitoring

        Start installing multicluster

        Start installing openpitrix

        Start installing network

        Start installing devops

        **************************************************

        Waiting for all tasks to be completed …

        task network status is successful (⅕)

        task openpitrix status is successful (⅖)

        task multicluster status is successful (⅗)

        task monitoring status is successful (⅘)

        task devops status is failed (5/5)

        **************************************************

        Collecting installation results …

        Task ‘devops’ failed:

        ******************************************************************************************************************************************************

        {

        “counter”: 144,

        “created”: “2024-02-19T03:13:42.321062”,

        “end_line”: 174,

        “event”: “runner_on_failed”,

        “event_data”: {

        "duration": 400.773811,
        
        "end": "2024-02-19T03:13:42.320722",
        
        "event_loop": null,
        
        "host": "localhost",
        
        "ignore_errors": null,
        
        "play": "localhost",
        
        "play_pattern": "localhost",
        
        "play_uuid": "a6dde999-4ee5-c3a9-17e0-000000000005",
        
        "playbook": "/kubesphere/playbooks/devops.yaml",
        
        "playbook_uuid": "89d0fe33-1f1a-4fe7-82ae-d5c7f9780cac",
        
        "remote_addr": "127.0.0.1",
        
        "res": {
        
          "_ansible_no_log": false,
        
          "attempts": 3,
        
          "changed": true,
        
          "cmd": "# Delete Job migrate because 'helm upgrade' will try to update immutable fields of Job, which is not allowed.\\n/usr/local/bin/kubectl delete job -n kubesphere-devops-system migrate --ignore-not-found\\n\\nks_devops_chart_version=0.2.2\\ncharts_folder=/kubesphere/kubesphere/ks-devops/charts\\nks_devops_chart=$charts_folder/ks-devops-$ks_devops_chart_version.tgz\\n\\n# Create or update CRDs manually\\ntar xzvf $ks_devops_chart -C $charts_folder\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/crds\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/charts/s2i/crds\\n\\n# Waiting for CRD to complete the upgrade\\nsleep 10\\n\\n# Import the templates seperately due the potential webhook issues\\nrm -rf s2i-templates\\nhelm template  $charts_folder/ks-devops/charts/s2i/  -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml  -s templates/binary.yaml  -s templates/java.yaml  -s templates/nodejs.yaml  -s templates/python.yaml  -s templates/tomcat.yaml > s2i-templates\\\\templates.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/binary.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/java.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/nodejs.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/python.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/tomcat.yaml\\n\\n/usr/local/bin/helm upgrade --install devops $ks_devops_chart -n kubesphere-devops-system -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml --wait\\n\\n/usr/local/bin/kubectl apply -f s2i-templates\\\\templates.yaml\\n",
        
          "delta": "0:00:15.961917",
        
          "end": "2024-02-19 11:13:42.266312",
        
          "invocation": {
        
            "module_args": {
        
              "_raw_params": "# Delete Job migrate because 'helm upgrade' will try to update immutable fields of Job, which is not allowed.\\n/usr/local/bin/kubectl delete job -n kubesphere-devops-system migrate --ignore-not-found\\n\\nks_devops_chart_version=0.2.2\\ncharts_folder=/kubesphere/kubesphere/ks-devops/charts\\nks_devops_chart=$charts_folder/ks-devops-$ks_devops_chart_version.tgz\\n\\n# Create or update CRDs manually\\ntar xzvf $ks_devops_chart -C $charts_folder\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/crds\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/charts/s2i/crds\\n\\n# Waiting for CRD to complete the upgrade\\nsleep 10\\n\\n# Import the templates seperately due the potential webhook issues\\nrm -rf s2i-templates\\nhelm template  $charts_folder/ks-devops/charts/s2i/  -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml  -s templates/binary.yaml  -s templates/java.yaml  -s templates/nodejs.yaml  -s templates/python.yaml  -s templates/tomcat.yaml > s2i-templates\\\\templates.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/binary.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/java.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/nodejs.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/python.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/tomcat.yaml\\n\\n/usr/local/bin/helm upgrade --install devops $ks_devops_chart -n kubesphere-devops-system -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml --wait\\n\\n/usr/local/bin/kubectl apply -f s2i-templates\\\\templates.yaml\\n",
        
              "_uses_shell": true,
        
              "argv": null,
        
              "chdir": null,
        
              "creates": null,
        
              "executable": "/bin/bash",
        
              "removes": null,
        
              "stdin": null,
        
              "stdin_add_newline": true,
        
              "strip_empty_ends": true,
        
              "warn": true
        
            }
        
          },
        
          "msg": "non-zero return code",
        
          "rc": 1,
        
          "start": "2024-02-19 11:13:26.304395",
        
          "stderr": "Error: UPGRADE FAILED: cannot patch \\"binary\\" with kind S2iBuilderTemplate: Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:41Z is after 2024-02-14T06:08:48Z\\nWarning: resource s2ibuildertemplates/binary is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/java is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/nodejs is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/python is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/tomcat is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nError from server (InternalError): error when applying patch:\\n{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"\\u4e8c\\u8fdb\\u5236\\u6587\\u4ef6\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"This is a builder template for binary build\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-binary-container\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"binary-type.kubesphere.io\\\\\\":\\\\\\"binary\\\\\\",\\\\\\"builder-type.kubesphere.io/b2i\\\\\\":\\\\\\"b2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"binary\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"binary\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This is a builder template for binary build\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when calling binary,\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/binary.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.1\\\\\\"}}\\\\n\\"}}}\\nto:\\nResource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"\\nName: \\"binary\\", Namespace: \\"\\"\\nfor: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:41Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Java \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\u3002\\u901a\\u8fc7\\u8be5\\u6a21\\u7248\\u53ef\\u6784\\u5efa\\u51fa\\u76f4\\u63a5\\u8fd0\\u884c\\u7684\\u5e94\\u7528\\u955c\\u50cf\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\").\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-java-container/blob/master/java/images\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"binary-type.kubesphere.io\\\\\\":\\\\\\"jar\\\\\\",\\\\\\"builder-type.kubesphere.io/b2i\\\\\\":\\\\\\"b2i\\\\\\",\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"java\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"java\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/java-8-runtime:v3.2.0\\\\\\"},{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/java-11-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/java-11-runtime:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\")\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS_APPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_MIRROR_URL\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_CLEAR_REPO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"boolean\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/\* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (\*.jar).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_COPY_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_LIB_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"options to add when calling java\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_OPTIONS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"a number \\\\\\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\\\\\u003e 8 will be removed. For versions \\\\\\\\u003e= 10 no explicit memory limit is calculated since Java \\\\\\\\u003e= 10 has support for container limits.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAJOR_VERSION\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_INIT_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_CORE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"set this to get some diagnostics information to standard out when things are happening\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DIAGNOSTICS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAIN_CLASS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_JAR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Name to use for the process\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_NAME\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/\*).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_CLASSPATH\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set remote debugging will be switched on\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set enables suspend mode in remote debugging\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_SUSPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Port used for remote debugging. Default: 5005\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_PORT\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTP_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTPS_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NO_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/java.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.2\\\\\\"}}\\\\n\\"}}}\\nto:\\nResource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"\\nName: \\"java\\", Namespace: \\"\\"\\nfor: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:41Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Nodejs \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\u3002Node.js \\u662f\\u57fa\\u4e8e Chrome \\u7684 JavaScript \\u8fd0\\u884c\\u65f6\\u6784\\u5efa\\u7684\\u5e73\\u53f0\\uff0c\\u53ef\\u8f7b\\u677e\\u6784\\u5efa\\u5feb\\u901f\\uff0c\\u53ef\\u6269\\u5c55\\u7684\\u7f51\\u7edc\\u5e94\\u7528\\u7a0b\\u5e8f\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-nodejs-container\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"nodejs\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"nodejs\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/nodejs-6-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/nodejs-4-centos7:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"NodeJS runtime mode (default: \\\\\\\\\\\\\\"production\\\\\\\\\\\\\\")\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NODE_ENV\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"When set to \\\\\\\\\\\\\\"true\\\\\\\\\\\\\\", nodemon will be used to automatically reload the server while you work (default: \\\\\\\\\\\\\\"false\\\\\\\\\\\\\\"). Setting DEV_MODE to \\\\\\\\\\\\\\"true\\\\\\\\\\\\\\" will change the NODE_ENV default to \\\\\\\\\\\\\\"development\\\\\\\\\\\\\\" (if not explicitly set).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"DEV_MODE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"boolean\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Select an alternate / custom runtime mode, defined in your package.json file's scripts section (default: npm run \\\\\\\\\\\\\\"start\\\\\\\\\\\\\\"). These user-defined run-scripts are unavailable while DEV_MODE is in use.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NPM_RUN\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Use an npm proxy during assembly\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTP_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Use an npm proxy during assembly\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTPS_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Use a custom NPM registry mirror to download packages during the build process\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NPM_MIRROR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to a non-empty value to use \\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\" get dependencies\\\\\\",\\\\\\"key\\\\\\":\\\\\\"YARN_ENABLED\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"\\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\" args\\\\\\",\\\\\\"key\\\\\\":\\\\\\"YARN_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/nodejs.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.1\\\\\\"}}\\\\n\\"}}}\\nto:\\nResource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"\\nName: \\"nodejs\\", Namespace: \\"\\"\\nfor: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:42Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Python \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\u3002Python \\u662f\\u4e00\\u79cd\\u6613\\u4e8e\\u5b66\\u4e60\\uff0c\\u529f\\u80fd\\u5f3a\\u5927\\u7684\\u7f16\\u7a0b\\u8bed\\u8a00\\u3002 \\u5b83\\u5177\\u6709\\u9ad8\\u6548\\u7684\\u9ad8\\u7ea7\\u6570\\u636e\\u7ed3\\u6784\\u548c\\u7b80\\u5355\\u4f46\\u6709\\u6548\\u7684\\u9762\\u5411\\u5bf9\\u8c61\\u7f16\\u7a0b\\u65b9\\u6cd5\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-python-container\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"python\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"python\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-36-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-35-c

        PLAY RECAP *********************************************************************

        localhost : ok=25 changed=14 unreachable=0 failed=0 skipped=22 rescued=0 ignored=0

        Start installing monitoring

        Start installing multicluster

        Start installing openpitrix

        Start installing network

        Start installing devops

        **************************************************

        Waiting for all tasks to be completed …

        task network status is successful (⅕)

        task openpitrix status is successful (⅖)

        task multicluster status is successful (⅗)

        task monitoring status is successful (⅘)

        task devops status is failed (5/5)

        **************************************************

        Collecting installation results …

        Task ‘devops’ failed:

        ******************************************************************************************************************************************************

        {

        “counter”: 144,

        “created”: “2024-02-19T03:13:42.321062”,

        “end_line”: 174,

        “event”: “runner_on_failed”,

        “event_data”: {

        "duration": 400.773811,
        
        "end": "2024-02-19T03:13:42.320722",
        
        "event_loop": null,
        
        "host": "localhost",
        
        "ignore_errors": null,
        
        "play": "localhost",
        
        "play_pattern": "localhost",
        
        "play_uuid": "a6dde999-4ee5-c3a9-17e0-000000000005",
        
        "playbook": "/kubesphere/playbooks/devops.yaml",
        
        "playbook_uuid": "89d0fe33-1f1a-4fe7-82ae-d5c7f9780cac",
        
        "remote_addr": "127.0.0.1",
        
        "res": {
        
          "_ansible_no_log": false,
        
          "attempts": 3,
        
          "changed": true,
        
          "cmd": "# Delete Job migrate because 'helm upgrade' will try to update immutable fields of Job, which is not allowed.\\n/usr/local/bin/kubectl delete job -n kubesphere-devops-system migrate --ignore-not-found\\n\\nks_devops_chart_version=0.2.2\\ncharts_folder=/kubesphere/kubesphere/ks-devops/charts\\nks_devops_chart=$charts_folder/ks-devops-$ks_devops_chart_version.tgz\\n\\n# Create or update CRDs manually\\ntar xzvf $ks_devops_chart -C $charts_folder\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/crds\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/charts/s2i/crds\\n\\n# Waiting for CRD to complete the upgrade\\nsleep 10\\n\\n# Import the templates seperately due the potential webhook issues\\nrm -rf s2i-templates\\nhelm template  $charts_folder/ks-devops/charts/s2i/  -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml  -s templates/binary.yaml  -s templates/java.yaml  -s templates/nodejs.yaml  -s templates/python.yaml  -s templates/tomcat.yaml > s2i-templates\\\\templates.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/binary.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/java.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/nodejs.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/python.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/tomcat.yaml\\n\\n/usr/local/bin/helm upgrade --install devops $ks_devops_chart -n kubesphere-devops-system -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml --wait\\n\\n/usr/local/bin/kubectl apply -f s2i-templates\\\\templates.yaml\\n",
        
          "delta": "0:00:15.961917",
        
          "end": "2024-02-19 11:13:42.266312",
        
          "invocation": {
        
            "module_args": {
        
              "_raw_params": "# Delete Job migrate because 'helm upgrade' will try to update immutable fields of Job, which is not allowed.\\n/usr/local/bin/kubectl delete job -n kubesphere-devops-system migrate --ignore-not-found\\n\\nks_devops_chart_version=0.2.2\\ncharts_folder=/kubesphere/kubesphere/ks-devops/charts\\nks_devops_chart=$charts_folder/ks-devops-$ks_devops_chart_version.tgz\\n\\n# Create or update CRDs manually\\ntar xzvf $ks_devops_chart -C $charts_folder\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/crds\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/charts/s2i/crds\\n\\n# Waiting for CRD to complete the upgrade\\nsleep 10\\n\\n# Import the templates seperately due the potential webhook issues\\nrm -rf s2i-templates\\nhelm template  $charts_folder/ks-devops/charts/s2i/  -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml  -s templates/binary.yaml  -s templates/java.yaml  -s templates/nodejs.yaml  -s templates/python.yaml  -s templates/tomcat.yaml > s2i-templates\\\\templates.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/binary.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/java.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/nodejs.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/python.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/tomcat.yaml\\n\\n/usr/local/bin/helm upgrade --install devops $ks_devops_chart -n kubesphere-devops-system -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml --wait\\n\\n/usr/local/bin/kubectl apply -f s2i-templates\\\\templates.yaml\\n",
        
              "_uses_shell": true,
        
              "argv": null,
        
              "chdir": null,
        
              "creates": null,
        
              "executable": "/bin/bash",
        
              "removes": null,
        
              "stdin": null,
        
              "stdin_add_newline": true,
        
              "strip_empty_ends": true,
        
              "warn": true
        
            }
        
          },
        
          "msg": "non-zero return code",
        
          "rc": 1,
        
          "start": "2024-02-19 11:13:26.304395",
        
          "stderr": "Error: UPGRADE FAILED: cannot patch \\"binary\\" with kind S2iBuilderTemplate: Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:41Z is after 2024-02-14T06:08:48Z\\nWarning: resource s2ibuildertemplates/binary is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/java is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/nodejs is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/python is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/tomcat is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nError from server (InternalError): error when applying patch:\\n{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"\\u4e8c\\u8fdb\\u5236\\u6587\\u4ef6\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"This is a builder template for binary build\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-binary-container\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"binary-type.kubesphere.io\\\\\\":\\\\\\"binary\\\\\\",\\\\\\"builder-type.kubesphere.io/b2i\\\\\\":\\\\\\"b2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"binary\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"binary\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This is a builder template for binary build\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when calling binary,\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/binary.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.1\\\\\\"}}\\\\n\\"}}}\\nto:\\nResource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"\\nName: \\"binary\\", Namespace: \\"\\"\\nfor: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:41Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Java \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\u3002\\u901a\\u8fc7\\u8be5\\u6a21\\u7248\\u53ef\\u6784\\u5efa\\u51fa\\u76f4\\u63a5\\u8fd0\\u884c\\u7684\\u5e94\\u7528\\u955c\\u50cf\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\").\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-java-container/blob/master/java/images\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"binary-type.kubesphere.io\\\\\\":\\\\\\"jar\\\\\\",\\\\\\"builder-type.kubesphere.io/b2i\\\\\\":\\\\\\"b2i\\\\\\",\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"java\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"java\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/java-8-runtime:v3.2.0\\\\\\"},{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/java-11-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/java-11-runtime:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\")\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS_APPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_MIRROR_URL\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_CLEAR_REPO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"boolean\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/\* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (\*.jar).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_COPY_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_LIB_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"options to add when calling java\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_OPTIONS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"a number \\\\\\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\\\\\u003e 8 will be removed. For versions \\\\\\\\u003e= 10 no explicit memory limit is calculated since Java \\\\\\\\u003e= 10 has support for container limits.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAJOR_VERSION\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_INIT_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_CORE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"set this to get some diagnostics information to standard out when things are happening\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DIAGNOSTICS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAIN_CLASS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_JAR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Name to use for the process\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_NAME\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/\*).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_CLASSPATH\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set remote debugging will be switched on\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set enables suspend mode in remote debugging\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_SUSPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Port used for remote debugging. Default: 5005\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_PORT\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTP_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTPS_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NO_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/java.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.2\\\\\\"}}\\\\n\\"}}}\\nto:\\nResource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"\\nName: \\"java\\", Namespace: \\"\\"\\nfor: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:41Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Nodejs \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\u3002Node.js \\u662f\\u57fa\\u4e8e Chrome \\u7684 JavaScript \\u8fd0\\u884c\\u65f6\\u6784\\u5efa\\u7684\\u5e73\\u53f0\\uff0c\\u53ef\\u8f7b\\u677e\\u6784\\u5efa\\u5feb\\u901f\\uff0c\\u53ef\\u6269\\u5c55\\u7684\\u7f51\\u7edc\\u5e94\\u7528\\u7a0b\\u5e8f\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-nodejs-container\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"nodejs\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"nodejs\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/nodejs-6-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/nodejs-4-centos7:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"NodeJS runtime mode (default: \\\\\\\\\\\\\\"production\\\\\\\\\\\\\\")\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NODE_ENV\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"When set to \\\\\\\\\\\\\\"true\\\\\\\\\\\\\\", nodemon will be used to automatically reload the server while you work (default: \\\\\\\\\\\\\\"false\\\\\\\\\\\\\\"). Setting DEV_MODE to \\\\\\\\\\\\\\"true\\\\\\\\\\\\\\" will change the NODE_ENV default to \\\\\\\\\\\\\\"development\\\\\\\\\\\\\\" (if not explicitly set).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"DEV_MODE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"boolean\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Select an alternate / custom runtime mode, defined in your package.json file's scripts section (default: npm run \\\\\\\\\\\\\\"start\\\\\\\\\\\\\\"). These user-defined run-scripts are unavailable while DEV_MODE is in use.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NPM_RUN\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Use an npm proxy during assembly\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTP_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Use an npm proxy during assembly\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTPS_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Use a custom NPM registry mirror to download packages during the build process\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NPM_MIRROR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to a non-empty value to use \\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\" get dependencies\\\\\\",\\\\\\"key\\\\\\":\\\\\\"YARN_ENABLED\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"\\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\" args\\\\\\",\\\\\\"key\\\\\\":\\\\\\"YARN_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/nodejs.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.1\\\\\\"}}\\\\n\\"}}}\\nto:\\nResource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"\\nName: \\"nodejs\\", Namespace: \\"\\"\\nfor: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:42Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Python \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\u3002Python \\u662f\\u4e00\\u79cd\\u6613\\u4e8e\\u5b66\\u4e60\\uff0c\\u529f\\u80fd\\u5f3a\\u5927\\u7684\\u7f16\\u7a0b\\u8bed\\u8a00\\u3002 \\u5b83\\u5177\\u6709\\u9ad8\\u6548\\u7684\\u9ad8\\u7ea7\\u6570\\u636e\\u7ed3\\u6784\\u548c\\u7b80\\u5355\\u4f46\\u6709\\u6548\\u7684\\u9762\\u5411\\u5bf9\\u8c61\\u7f16\\u7a0b\\u65b9\\u6cd5\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-python-container\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"python\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"python\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-36-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-35-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-34-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-27-centos7:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/python-36-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\\\\\nThis container image includes an npm utility, so users can use it to install JavaScript modules for their web applications. There is no guarantee for any specific npm or nodejs version, that is included in the image; those versions can be changed anytime and the nodejs itself is included just to make the npm work.\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Used to run the application from a script file. This should be a path to a script file (defaults to app.sh unless set to null) that will be run to start the application.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_SCRIPT\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Used to run the application from a Python script. This should be a path to a Python file (defaults to app.py unless set to null) that will be passed to the Python interpreter to start the application.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_FILE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Used to run the application with Gunicorn, as documented here. This variable specifies a WSGI callable with the pattern MODULE_NAME:VARIABLE_NAME, where MODULE_NAME is the full dotted path of a module, and VARIABLE_NAME refers to a WSGI callable inside the specified module. Gunicorn will look for a WSGI callable named application if not specified.\\\\\\\\nIf APP_MODULE is not provided, the run script will look for a wsgi.py file in your project and use it if it exists.\\\\\\\\nIf using setup.py for installing the application, the MODULE_NAME part can be read from there. \\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_MODULE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This variable can be used to specify a sub-directory in which the application to be run is contained. The directory pointed to by this variable needs to contain wsgi.py (for Gunicorn) or manage.py (for Django).\\\\\\\\nIf APP_HOME is not provided, the assemble and run scripts will use the application's root directory.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_HOME\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Path to a valid Python file with a Gunicorn configuration file.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_CONFIG\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to a non-empty value to inhibit the execution of 'manage.py collectstatic' during the build. This only affects Django projects.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"DISABLE_COLLECTSTATIC\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this to a non-empty value to skip processing of setup.py script if you use -e . in requirements.txt to trigger its processing or you don't want your application to be installed into site-packages directory.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"DISABLE_SETUP_PY_PROCESSING\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to use Pipenv, the higher-level Python packaging tool, to manage dependencies of the application. This should be used only if your project contains properly formated Pipfile and Pipfile.lock.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ENABLE_PIPENV\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to use a custom index URL or mirror to download required packages during build process. This only affects packages listed in requirements.txt. Pipenv ignores this variable.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"PIP_INDEX_URL\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to a non-empty value to have the 'pip' program and related python packages (setuptools and wheel) be upgraded to the most recent version before any Python packages are installed. If not set it will use whatever the default version is included by the platform for the Python version being used..\\\\\\",\\\\\\"key\\\\\\":\\\\\\"UPGRADE_PIP_TO_LATEST\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this to change the default setting for the number of workers. By default, this is set to the number of available cores times 2, capped at 12.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"WEB_CONCURRENCY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/python.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.1\\\\\\"}}\\\\n\\"}}}\\nto:\\nResource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"\\nName: \\"python\\", Namespace: \\"\\"\\nfor: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:42Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Tomcat \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\uff0c\\u901a\\u8fc7\\u8be5\\u6a21\\u7248\\u53ef\\u6784\\u5efa\\u51fa\\u76f4\\u63a5\\u8fd0\\u884c\\u7684\\u5e94\\u7528\\u955c\\u50cf\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-java-container/tree/master/tomcat/images/\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"binary-type.kubesphere.io\\\\\\":\\\\\\"war\\\\\\",\\\\\\"builder-type.kubesphere.io/b2i\\\\\\":\\\\\\"b2i\\\\\\",\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"tomcat\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"java\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/tomcat85-java11-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/tomcat85-java11-runtime:v3.2.0\\\\\\"},{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/tomcat85-java8-runtime:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS_APPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_MIRROR_URL\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_CLEAR_REPO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"boolean\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/\* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (\*.jar).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_COPY_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_LIB_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"options to add when calling java\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_OPTIONS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"a number \\\\\\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\\\\\u003e 8 will be removed. For versions \\\\\\\\u003e= 10 no explicit memory limit is calculated since Java \\\\\\\\u003e= 10 has support for container limits.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAJOR_VERSION\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_INIT_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_CORE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"set this to get some diagnostics information to standard out when things are happening\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DIAGNOSTICS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAIN_CLASS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_JAR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Name to use for the process\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_NAME\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/\*).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_CLASSPATH\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set remote debugging will be switched on\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set enables suspend mode in remote debugging\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_SUSPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Port used for remote debugging. Default: 5005\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_PORT\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTP_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTPS_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NO_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/tomcat.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.2\\\\\\"}}\\\\n\\"}}}\\nto:\\nResource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"\\nName: \\"tomcat\\", Namespace: \\"\\"\\nfor: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:42Z is after 2024-02-14T06:08:48Z",
        
          "stderr_lines": [
        
            "Error: UPGRADE FAILED: cannot patch \\"binary\\" with kind S2iBuilderTemplate: Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:41Z is after 2024-02-14T06:08:48Z",
        
            "Warning: resource s2ibuildertemplates/binary is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        
            "Warning: resource s2ibuildertemplates/java is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        
            "Warning: resource s2ibuildertemplates/nodejs is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        
            "Warning: resource s2ibuildertemplates/python is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        
            "Warning: resource s2ibuildertemplates/tomcat is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        
            "Error from server (InternalError): error when applying patch:",
        
            "{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"\\u4e8c\\u8fdb\\u5236\\u6587\\u4ef6\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"This is a builder template for binary build\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-binary-container\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"binary-type.kubesphere.io\\\\\\":\\\\\\"binary\\\\\\",\\\\\\"builder-type.kubesphere.io/b2i\\\\\\":\\\\\\"b2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"binary\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"binary\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This is a builder template for binary build\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when calling binary,\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/binary.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.1\\\\\\"}}\\\\n\\"}}}",
        
            "to:",
        
            "Resource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"",
        
            "Name: \\"binary\\", Namespace: \\"\\"",
        
            "for: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:41Z is after 2024-02-14T06:08:48Z",
        
            "Error from server (InternalError): error when applying patch:",
        
            "{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Java \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\u3002\\u901a\\u8fc7\\u8be5\\u6a21\\u7248\\u53ef\\u6784\\u5efa\\u51fa\\u76f4\\u63a5\\u8fd0\\u884c\\u7684\\u5e94\\u7528\\u955c\\u50cf\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\").\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-java-container/blob/master/java/images\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"binary-type.kubesphere.io\\\\\\":\\\\\\"jar\\\\\\",\\\\\\"builder-type.kubesphere.io/b2i\\\\\\":\\\\\\"b2i\\\\\\",\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"java\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"java\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/java-8-runtime:v3.2.0\\\\\\"},{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/java-11-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/java-11-runtime:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\")\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS_APPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_MIRROR_URL\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_CLEAR_REPO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"boolean\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/\* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (\*.jar).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_COPY_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_LIB_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"options to add when calling java\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_OPTIONS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"a number \\\\\\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\\\\\u003e 8 will be removed. For versions \\\\\\\\u003e= 10 no explicit memory limit is calculated since Java \\\\\\\\u003e= 10 has support for container limits.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAJOR_VERSION\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_INIT_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_CORE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"set this to get some diagnostics information to standard out when things are happening\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DIAGNOSTICS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAIN_CLASS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_JAR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Name to use for the process\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_NAME\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/\*).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_CLASSPATH\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set remote debugging will be switched on\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set enables suspend mode in remote debugging\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_SUSPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Port used for remote debugging. Default: 5005\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_PORT\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTP_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTPS_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NO_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/java.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.2\\\\\\"}}\\\\n\\"}}}",
        
            "to:",
        
            "Resource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"",
        
            "Name: \\"java\\", Namespace: \\"\\"",
        
            "for: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:41Z is after 2024-02-14T06:08:48Z",
        
            "Error from server (InternalError): error when applying patch:",
        
            "{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Nodejs \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\u3002Node.js \\u662f\\u57fa\\u4e8e Chrome \\u7684 JavaScript \\u8fd0\\u884c\\u65f6\\u6784\\u5efa\\u7684\\u5e73\\u53f0\\uff0c\\u53ef\\u8f7b\\u677e\\u6784\\u5efa\\u5feb\\u901f\\uff0c\\u53ef\\u6269\\u5c55\\u7684\\u7f51\\u7edc\\u5e94\\u7528\\u7a0b\\u5e8f\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-nodejs-container\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"nodejs\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"nodejs\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/nodejs-6-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/nodejs-4-centos7:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"NodeJS runtime mode (default: \\\\\\\\\\\\\\"production\\\\\\\\\\\\\\")\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NODE_ENV\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"When set to \\\\\\\\\\\\\\"true\\\\\\\\\\\\\\", nodemon will be used to automatically reload the server while you work (default: \\\\\\\\\\\\\\"false\\\\\\\\\\\\\\"). Setting DEV_MODE to \\\\\\\\\\\\\\"true\\\\\\\\\\\\\\" will change the NODE_ENV default to \\\\\\\\\\\\\\"development\\\\\\\\\\\\\\" (if not explicitly set).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"DEV_MODE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"boolean\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Select an alternate / custom runtime mode, defined in your package.json file's scripts section (default: npm run \\\\\\\\\\\\\\"start\\\\\\\\\\\\\\"). These user-defined run-scripts are unavailable while DEV_MODE is in use.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NPM_RUN\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Use an npm proxy during assembly\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTP_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Use an npm proxy during assembly\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTPS_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Use a custom NPM registry mirror to download packages during the build process\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NPM_MIRROR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to a non-empty value to use \\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\" get dependencies\\\\\\",\\\\\\"key\\\\\\":\\\\\\"YARN_ENABLED\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"\\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\" args\\\\\\",\\\\\\"key\\\\\\":\\\\\\"YARN_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/nodejs.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.1\\\\\\"}}\\\\n\\"}}}",
        
            "to:",
        
            "Resource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"",
        
            "Name: \\"nodejs\\", Namespace: \\"\\"",
        
            "for: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:42Z is after 2024-02-14T06:08:48Z",
        
            "Error from server (InternalError): error when applying patch:",
        
            "{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Python \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\u3002Python \\u662f\\u4e00\\u79cd\\u6613\\u4e8e\\u5b66\\u4e60\\uff0c\\u529f\\u80fd\\u5f3a\\u5927\\u7684\\u7f16\\u7a0b\\u8bed\\u8a00\\u3002 \\u5b83\\u5177\\u6709\\u9ad8\\u6548\\u7684\\u9ad8\\u7ea7\\u6570\\u636e\\u7ed3\\u6784\\u548c\\u7b80\\u5355\\u4f46\\u6709\\u6548\\u7684\\u9762\\u5411\\u5bf9\\u8c61\\u7f16\\u7a0b\\u65b9\\u6cd5\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-python-container\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"python\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"python\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-36-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-35-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-34-centos7:v3.2.0\\\\\\"},{\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/python-27-centos7:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/python-36-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\\\\\nThis container image includes an npm utility, so users can use it to install JavaScript modules for their web applications. There is no guarantee for any specific npm or nodejs version, that is included in the image; those versions can be changed anytime and the nodejs itself is included just to make the npm work.\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Used to run the application from a script file. This should be a path to a script file (defaults to app.sh unless set to null) that will be run to start the application.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_SCRIPT\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Used to run the application from a Python script. This should be a path to a Python file (defaults to app.py unless set to null) that will be passed to the Python interpreter to start the application.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_FILE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Used to run the application with Gunicorn, as documented here. This variable specifies a WSGI callable with the pattern MODULE_NAME:VARIABLE_NAME, where MODULE_NAME is the full dotted path of a module, and VARIABLE_NAME refers to a WSGI callable inside the specified module. Gunicorn will look for a WSGI callable named application if not specified.\\\\\\\\nIf APP_MODULE is not provided, the run script will look for a wsgi.py file in your project and use it if it exists.\\\\\\\\nIf using setup.py for installing the application, the MODULE_NAME part can be read from there. \\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_MODULE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This variable can be used to specify a sub-directory in which the application to be run is contained. The directory pointed to by this variable needs to contain wsgi.py (for Gunicorn) or manage.py (for Django).\\\\\\\\nIf APP_HOME is not provided, the assemble and run scripts will use the application's root directory.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_HOME\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Path to a valid Python file with a Gunicorn configuration file.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"APP_CONFIG\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to a non-empty value to inhibit the execution of 'manage.py collectstatic' during the build. This only affects Django projects.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"DISABLE_COLLECTSTATIC\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this to a non-empty value to skip processing of setup.py script if you use -e . in requirements.txt to trigger its processing or you don't want your application to be installed into site-packages directory.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"DISABLE_SETUP_PY_PROCESSING\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to use Pipenv, the higher-level Python packaging tool, to manage dependencies of the application. This should be used only if your project contains properly formated Pipfile and Pipfile.lock.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ENABLE_PIPENV\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to use a custom index URL or mirror to download required packages during build process. This only affects packages listed in requirements.txt. Pipenv ignores this variable.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"PIP_INDEX_URL\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this variable to a non-empty value to have the 'pip' program and related python packages (setuptools and wheel) be upgraded to the most recent version before any Python packages are installed. If not set it will use whatever the default version is included by the platform for the Python version being used..\\\\\\",\\\\\\"key\\\\\\":\\\\\\"UPGRADE_PIP_TO_LATEST\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Set this to change the default setting for the number of workers. By default, this is set to the number of available cores times 2, capped at 12.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"WEB_CONCURRENCY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/python.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.1\\\\\\"}}\\\\n\\"}}}",
        
            "to:",
        
            "Resource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"",
        
            "Name: \\"python\\", Namespace: \\"\\"",
        
            "for: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:42Z is after 2024-02-14T06:08:48Z",
        
            "Error from server (InternalError): error when applying patch:",
        
            "{\\"metadata\\":{\\"annotations\\":{\\"kubectl.kubernetes.io/last-applied-configuration\\":\\"{\\\\\\"apiVersion\\\\\\":\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\",\\\\\\"kind\\\\\\":\\\\\\"S2iBuilderTemplate\\\\\\",\\\\\\"metadata\\\\\\":{\\\\\\"annotations\\\\\\":{\\\\\\"descriptionCN\\\\\\":\\\\\\"Tomcat \\u5e94\\u7528\\u7684\\u6784\\u5efa\\u5668\\u6a21\\u7248\\uff0c\\u901a\\u8fc7\\u8be5\\u6a21\\u7248\\u53ef\\u6784\\u5efa\\u51fa\\u76f4\\u63a5\\u8fd0\\u884c\\u7684\\u5e94\\u7528\\u955c\\u50cf\\u3002\\\\\\",\\\\\\"descriptionEN\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\\\\",\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\":\\\\\\"https://github.com/kubesphere/s2i-java-container/tree/master/tomcat/images/\\\\\\",\\\\\\"helm.sh/hook\\\\\\":\\\\\\"pre-install\\\\\\"},\\\\\\"labels\\\\\\":{\\\\\\"binary-type.kubesphere.io\\\\\\":\\\\\\"war\\\\\\",\\\\\\"builder-type.kubesphere.io/b2i\\\\\\":\\\\\\"b2i\\\\\\",\\\\\\"builder-type.kubesphere.io/s2i\\\\\\":\\\\\\"s2i\\\\\\",\\\\\\"controller-tools.k8s.io\\\\\\":\\\\\\"1.0\\\\\\"},\\\\\\"name\\\\\\":\\\\\\"tomcat\\\\\\"},\\\\\\"spec\\\\\\":{\\\\\\"codeFramework\\\\\\":\\\\\\"java\\\\\\",\\\\\\"containerInfo\\\\\\":[{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/tomcat85-java11-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/tomcat85-java11-runtime:v3.2.0\\\\\\"},{\\\\\\"buildVolumes\\\\\\":[\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\"],\\\\\\"builderImage\\\\\\":\\\\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\\\\",\\\\\\"runtimeArtifacts\\\\\\":[{\\\\\\"source\\\\\\":\\\\\\"/deployments\\\\\\"}],\\\\\\"runtimeImage\\\\\\":\\\\\\"kubesphere/tomcat85-java8-runtime:v3.2.0\\\\\\"}],\\\\\\"defaultBaseImage\\\\\\":\\\\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\\\\",\\\\\\"description\\\\\\":\\\\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\\\\",\\\\\\"environment\\\\\\":[{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_ARGS_APPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_MIRROR_URL\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\\\\",\\\\\\"key\\\\\\":\\\\\\"MAVEN_CLEAR_REPO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"boolean\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/\* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (\*.jar).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"ARTIFACT_COPY_ARGS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_LIB_DIR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"options to add when calling java\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_OPTIONS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"a number \\\\\\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\\\\\u003e 8 will be removed. For versions \\\\\\\\u003e= 10 no explicit memory limit is calculated since Java \\\\\\\\u003e= 10 has support for container limits.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAJOR_VERSION\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_INIT_MEM_RATIO\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAX_CORE\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"set this to get some diagnostics information to standard out when things are happening\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DIAGNOSTICS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_MAIN_CLASS\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_JAR\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Name to use for the process\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_APP_NAME\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/\*).\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_CLASSPATH\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set remote debugging will be switched on\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"If set enables suspend mode in remote debugging\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_SUSPEND\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"Port used for remote debugging. Default: 5005\\\\\\",\\\\\\"key\\\\\\":\\\\\\"JAVA_DEBUG_PORT\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTP_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"HTTPS_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"},{\\\\\\"defaultValue\\\\\\":\\\\\\"\\\\\\",\\\\\\"description\\\\\\":\\\\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\\\\",\\\\\\"key\\\\\\":\\\\\\"NO_PROXY\\\\\\",\\\\\\"required\\\\\\":false,\\\\\\"type\\\\\\":\\\\\\"string\\\\\\"}],\\\\\\"iconPath\\\\\\":\\\\\\"assets/tomcat.png\\\\\\",\\\\\\"version\\\\\\":\\\\\\"0.0.2\\\\\\"}}\\\\n\\"}}}",
        
            "to:",
        
            "Resource: \\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\", GroupVersionKind: \\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\"",
        
            "Name: \\"tomcat\\", Namespace: \\"\\"",
        
            "for: \\"s2i-templatestemplates.yaml\\": Internal error occurred: failed calling webhook \\"s2ibuildertemplate.kb.io\\": failed to call webhook: Post \\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\": x509: certificate has expired or is not yet valid: current time 2024-02-19T03:13:42Z is after 2024-02-14T06:08:48Z"
        
          ],
        
          "stdout": "ks-devops/Chart.yaml\\nks-devops/values.yaml\\nks-devops/templates/NOTES.txt\\nks-devops/templates/_helpers.tpl\\nks-devops/templates/cluster-step-templates.yaml\\nks-devops/templates/cluster-template-ci.yaml\\nks-devops/templates/cluster-template-cicd.yaml\\nks-devops/templates/cluster-template-golang.yaml\\nks-devops/templates/cluster-template-maven.yaml\\nks-devops/templates/cluster-template-nodejs.yaml\\nks-devops/templates/config.yaml\\nks-devops/templates/cronjob-gc.yaml\\nks-devops/templates/deployment-apiserver.yaml\\nks-devops/templates/deployment-controller.yaml\\nks-devops/templates/jenkins-agent-config.yaml\\nks-devops/templates/service-apiserver.yaml\\nks-devops/templates/serviceaccount.yaml\\nks-devops/templates/tests/test-connection.yaml\\nks-devops/.helmignore\\nks-devops/README.md\\nks-devops/crds/devops.kubesphere.io_clustersteptemplates.yaml\\nks-devops/crds/devops.kubesphere.io_clustertemplates.yaml\\nks-devops/crds/devops.kubesphere.io_devopsprojects.yaml\\nks-devops/crds/devops.kubesphere.io_gitrepositories.yaml\\nks-devops/crds/devops.kubesphere.io_pipelineruns.yaml\\nks-devops/crds/devops.kubesphere.io_pipelines.yaml\\nks-devops/crds/devops.kubesphere.io_templates.yaml\\nks-devops/crds/gitops.kubesphere.io_applications.yaml\\nks-devops/charts/jenkins/Chart.yaml\\nks-devops/charts/jenkins/values.yaml\\nks-devops/charts/jenkins/templates/NOTES.txt\\nks-devops/charts/jenkins/templates/_helpers.tpl\\nks-devops/charts/jenkins/templates/config.yaml\\nks-devops/charts/jenkins/templates/home-pvc.yaml\\nks-devops/charts/jenkins/templates/jenkins-agent-config.yaml\\nks-devops/charts/jenkins/templates/jenkins-agent-svc.yaml\\nks-devops/charts/jenkins/templates/jenkins-casc-config.yml\\nks-devops/charts/jenkins/templates/jenkins-master-deployment.yaml\\nks-devops/charts/jenkins/templates/jenkins-master-networkpolicy.yaml\\nks-devops/charts/jenkins/templates/jenkins-master-statefulset.yaml\\nks-devops/charts/jenkins/templates/jenkins-master-svc.yaml\\nks-devops/charts/jenkins/templates/jenkins-test.yaml\\nks-devops/charts/jenkins/templates/jenkins-worker-limitrange.yaml\\nks-devops/charts/jenkins/templates/jenkins-worker-namespace.yaml\\nks-devops/charts/jenkins/templates/jenkins-worker-namespacequota.yaml\\nks-devops/charts/jenkins/templates/jenkins-worker-rbac.yaml\\nks-devops/charts/jenkins/templates/jobs.yaml\\nks-devops/charts/jenkins/templates/prometheus-prometheusrule.yaml\\nks-devops/charts/jenkins/templates/prometheus-servicemonitor.yaml\\nks-devops/charts/jenkins/templates/rbac.yaml\\nks-devops/charts/jenkins/templates/secret.yaml\\nks-devops/charts/jenkins/templates/service-account.yaml\\nks-devops/charts/jenkins/.helmignore\\nks-devops/charts/jenkins/README.md\\nks-devops/charts/s2i/Chart.yaml\\nks-devops/charts/s2i/values.yaml\\nks-devops/charts/s2i/templates/NOTES.txt\\nks-devops/charts/s2i/templates/_helpers.tpl\\nks-devops/charts/s2i/templates/binary.yaml\\nks-devops/charts/s2i/templates/java.yaml\\nks-devops/charts/s2i/templates/nodejs.yaml\\nks-devops/charts/s2i/templates/operator.yaml\\nks-devops/charts/s2i/templates/prometheus-servicemonitor.yaml\\nks-devops/charts/s2i/templates/python.yaml\\nks-devops/charts/s2i/templates/tests/.gitkeep\\nks-devops/charts/s2i/templates/tomcat.yaml\\nks-devops/charts/s2i/.helmignore\\nks-devops/charts/s2i/README.md\\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibinaries.yaml\\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuilders.yaml\\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuildertemplates.yaml\\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2iruns.yaml\\ncustomresourcedefinition.apiextensions.k8s.io/clustersteptemplates.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/clustertemplates.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/devopsprojects.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/gitrepositories.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/pipelineruns.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/pipelines.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/templates.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/applications.gitops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/s2ibinaries.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/s2ibuilders.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/s2ibuildertemplates.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/s2iruns.devops.kubesphere.io configured",
        
          "stdout_lines": [
        
            "ks-devops/Chart.yaml",
        
            "ks-devops/values.yaml",
        
            "ks-devops/templates/NOTES.txt",
        
            "ks-devops/templates/_helpers.tpl",
        
            "ks-devops/templates/cluster-step-templates.yaml",
        
            "ks-devops/templates/cluster-template-ci.yaml",
        
            "ks-devops/templates/cluster-template-cicd.yaml",
        
            "ks-devops/templates/cluster-template-golang.yaml",
        
            "ks-devops/templates/cluster-template-maven.yaml",
        
            "ks-devops/templates/cluster-template-nodejs.yaml",
        
            "ks-devops/templates/config.yaml",
        
            "ks-devops/templates/cronjob-gc.yaml",
        
            "ks-devops/templates/deployment-apiserver.yaml",
        
            "ks-devops/templates/deployment-controller.yaml",
        
            "ks-devops/templates/jenkins-agent-config.yaml",
        
            "ks-devops/templates/service-apiserver.yaml",
        
            "ks-devops/templates/serviceaccount.yaml",
        
            "ks-devops/templates/tests/test-connection.yaml",
        
            "ks-devops/.helmignore",
        
            "ks-devops/README.md",
        
            "ks-devops/crds/devops.kubesphere.io_clustersteptemplates.yaml",
        
            "ks-devops/crds/devops.kubesphere.io_clustertemplates.yaml",
        
            "ks-devops/crds/devops.kubesphere.io_devopsprojects.yaml",
        
            "ks-devops/crds/devops.kubesphere.io_gitrepositories.yaml",
        
            "ks-devops/crds/devops.kubesphere.io_pipelineruns.yaml",
        
            "ks-devops/crds/devops.kubesphere.io_pipelines.yaml",
        
            "ks-devops/crds/devops.kubesphere.io_templates.yaml",
        
            "ks-devops/crds/gitops.kubesphere.io_applications.yaml",
        
            "ks-devops/charts/jenkins/Chart.yaml",
        
            "ks-devops/charts/jenkins/values.yaml",
        
            "ks-devops/charts/jenkins/templates/NOTES.txt",
        
            "ks-devops/charts/jenkins/templates/_helpers.tpl",
        
            "ks-devops/charts/jenkins/templates/config.yaml",
        
            "ks-devops/charts/jenkins/templates/home-pvc.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-agent-config.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-agent-svc.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-casc-config.yml",
        
            "ks-devops/charts/jenkins/templates/jenkins-master-deployment.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-master-networkpolicy.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-master-statefulset.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-master-svc.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-test.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-worker-limitrange.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-worker-namespace.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-worker-namespacequota.yaml",
        
            "ks-devops/charts/jenkins/templates/jenkins-worker-rbac.yaml",
        
            "ks-devops/charts/jenkins/templates/jobs.yaml",
          5 天 后

          devops-argocd-dex-server-84fff59566-hsrzb 0/1 CrashLoopBackOff 11 (3m35s ago) 28m

          dex-server一直重启

          系统信息

          虚拟机:CentOS Linux release 7.6.1810

          kubectl v1.26.5

          crictl version v1.24.0

          KubeSphere版本信息

          离线安装。 使用kk安装。

          KubeSphere v3.4.1

          [root@master ~]# kubectl describe pod devops-argocd-dex-server-84fff59566-hsrzb -n argocd

          Name: devops-argocd-dex-server-84fff59566-hsrzb

          Namespace: argocd

          Priority: 0

          Service Account: argocd-dex-server

          Node: node1/192.168.66.131

          Start Time: Mon, 26 Feb 2024 14:39:53 +0800

          Labels: app.kubernetes.io/component=dex-server

                        app.kubernetes.io/instance=devops
          
                        app.kubernetes.io/managed-by=Helm
          
                        app.kubernetes.io/name=argocd-dex-server
          
                        app.kubernetes.io/part-of=argocd
          
                        app.kubernetes.io/version=v2.30.2
          
                        helm.sh/chart=argo-cd-4.4.0
          
                        pod-template-hash=84fff59566

          Annotations: cni.projectcalico.org/containerID: b14b0527217b803ee9d199e5bc58dca1b876d1848e2d030b60742e28098b35e5

                        cni.projectcalico.org/podIP: 10.233.90.41/32
          
                        cni.projectcalico.org/podIPs: 10.233.90.41/32

          Status: Running

          IP: 10.233.90.41

          IPs:

          IP: 10.233.90.41

          Controlled By: ReplicaSet/devops-argocd-dex-server-84fff59566

          Init Containers:

          copyutil:

          Container ID:  containerd://f9a90db26466e46f8d848e69d3ba4aa8bbc3f37ad303cb8cd182db2d1633d5f5
          
          Image:         registry.opsman.top/kubesphereio/argocd:v2.3.3
          
          Image ID:      registry.opsman.top/kubesphereio/argocd@sha256:5c818399b9f9dbed4b0dbf668f699694b31aceee71ff18ef36fbd0c51c792f91
          
          Port:          <none>
          
          Host Port:     <none>
          
          Command:
          
            cp
          
            -n
          
            /usr/local/bin/argocd
          
            /shared/argocd-dex
          
          State:          Terminated
          
            Reason:       Completed
          
            Exit Code:    0
          
            Started:      Mon, 26 Feb 2024 14:40:03 +0800
          
            Finished:     Mon, 26 Feb 2024 14:40:59 +0800
          
          Ready:          True
          
          Restart Count:  0
          
          Environment:    <none>
          
          Mounts:
          
            /shared from static-files (rw)
          
            /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zrqfh (ro)

          Containers:

          dex-server:

          Container ID:  containerd://d909f017fb1cb9136d741078aa7d2fefd445e82590baa7b9d9059a272573183a
          
          Image:         registry.opsman.top/kubesphereio/dex:v2.30.2
          
          Image ID:      registry.opsman.top/kubesphereio/dex@sha256:197bd274c49d45a5b87ff2b20bf8e1eaccc72593e375112ac32b43b7fe3da531
          
          Ports:         5556/TCP, 5557/TCP, 5558/TCP
          
          Host Ports:    0/TCP, 0/TCP, 0/TCP
          
          Command:
          
            /shared/argocd-dex
          
            rundex
          
          State:          Running
          
            Started:      Mon, 26 Feb 2024 15:09:40 +0800
          
          Last State:     Terminated
          
            Reason:       Error
          
            Exit Code:    2
          
            Started:      Mon, 26 Feb 2024 15:02:59 +0800
          
            Finished:     Mon, 26 Feb 2024 15:04:37 +0800
          
          Ready:          False
          
          Restart Count:  12
          
          Liveness:       http-get http://:metrics/healthz/live delay=10s timeout=10s period=10s #success=1 #failure=3
          
          Readiness:      http-get http://:metrics/healthz/ready delay=10s timeout=10s period=10s #success=1 #failure=3
          
          Environment:    <none>
          
          Mounts:
          
            /shared from static-files (rw)
          
            /tmp from tmp-dir (rw)
          
            /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zrqfh (ro)

          Conditions:

          Type Status

          Initialized True

          Ready False

          ContainersReady False

          PodScheduled True

          Volumes:

          tmp-dir:

          Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
          
          Medium:     
          
          SizeLimit:  <unset>

          static-files:

          Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
          
          Medium:     
          
          SizeLimit:  <unset>

          kube-api-access-zrqfh:

          Type:                    Projected (a volume that contains injected data from multiple sources)
          
          TokenExpirationSeconds:  3607
          
          ConfigMapName:           kube-root-ca.crt
          
          ConfigMapOptional:       <nil>
          
          DownwardAPI:             true

          QoS Class: BestEffort

          Node-Selectors: <none>

          Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s

                                   node.kubernetes.io/unreachable:NoExecute op=Exists for 300s

          Events:

          Type Reason Age From Message


          Normal Scheduled 30m default-scheduler Successfully assigned argocd/devops-argocd-dex-server-84fff59566-hsrzb to node1

          Normal Pulled 30m kubelet Container image “registry.opsman.top/kubesphereio/argocd:v2.3.3” already present on machine

          Normal Created 30m kubelet Created container copyutil

          Normal Started 30m kubelet Started container copyutil

          Normal Pulled 28m (x2 over 29m) kubelet Container image “registry.opsman.top/kubesphereio/dex:v2.30.2” already present on machine

          Normal Created 28m (x2 over 29m) kubelet Created container dex-server

          Normal Started 28m (x2 over 29m) kubelet Started container dex-server

          Normal Killing 27m (x2 over 28m) kubelet Container dex-server failed liveness probe, will be restarted

          Warning Unhealthy 20m (x22 over 28m) kubelet Liveness probe failed: Get “http://10.233.90.41:5558/healthz/live”: dial tcp 10.233.90.41:5558: connect: connection refused

          Warning BackOff 5m8s (x74 over 25m) kubelet Back-off restarting failed container dex-server in pod devops-argocd-dex-server-84fff59566-hsrzb_argocd(95aff335-303c-4b4c-890e-98c7107cc655)

          Warning Unhealthy 12s (x57 over 28m) kubelet Readiness probe failed: Get “http://10.233.90.41:5558/healthz/ready”: dial tcp 10.233.90.41:5558: connect: connection refused

          kubectl logs -f devops-argocd-dex-server-84fff59566-hsrzb -n argocd

          Defaulted container “dex-server” out of: dex-server, copyutil (init)

          time=“2024-02-26T06:56:15Z” level=info msg=“Starting configmap/secret informers”

          time=“2024-02-26T06:56:15Z” level=info msg=“Configmap/secret informer synced”

          time=“2024-02-26T06:56:15Z” level=info msg=“0xc00047c4e0 subscribed to settings updates”

          time=“2024-02-26T06:56:15Z” level=info msg=“dex is not configured”

          dex-server一直重启是怎么解决的

            wang123git dex-server 频繁重启可以试下去掉 Deployment 的 readinessProbe 和 livenessProbe :

            $ kubectl -n argocd edit deployments.apps devops-argocd-dex-server