Which component(s) is affected?
No response
Describe the bug
Kubero operator generates a deploy command with escaped quotes that fail in shell:
sh -c "kubectl patch kuberoapps $APP --type=merge -p \"{\"spec\":{\"image\":{\"repository\": \"$REPOSITORY\",\"tag\": \"$TAG\"}}}\""
When sh -c executes this, the escaped quotes " inside the double-quoted string are misinterpreted, causing malformed JSON.
Causing:
Error from server (BadRequest): error decoding patch: invalid character 's' looking for beginning of object key string
Fix:
Use --patch-file instead of inline JSON patch.
Steps to reproduce
- Install Kubero on Upcloud
- Link to Docker repo
- Try to deploy with Source code -> Docker file
buildstrategy: dockerfile
deploymentstrategy: git
autodeploy: true
Expected behavior
The deploy step should successfully patch the KuberoApp resource with the new image repository and tag.
-> Build and deployed application
Screenshots
No response
Additional information
When Kubero creates a build job for GitOps deployment, the deploy container uses an inline JSON patch command that fails due to shell quoting issues:
Actual command generated by Kubero (from job spec):
json
{
"command": [
"sh",
"-c",
"kubectl patch kuberoapps $APP --type=merge -p \"{\"spec\":{\"image\":{\"repository\": \"$REPOSITORY\",\"tag\": \"$TAG\"}}}\""
]
}
The escaped quotes \" inside the double-quoted string in sh -c are not properly handled. When executed, the shell misinterprets the JSON structure, resulting in malformed JSON being sent to the Kubernetes API.
Suggested Fix
Replace the inline JSON patch with --patch-file approach:
Current (broken):
sh -c "kubectl patch kuberoapps $APP --type=merge -p \"{\"spec\":{\"image\":{\"repository\": \"$REPOSITORY\",\"tag\": \"$TAG\"}}}\""
Suggested fix:
sh -c "printf '{\"spec\":{\"image\":{\"repository\":\"%s\",\"tag\":\"%s\"}}}' \"\$REPOSITORY\" \"\$TAG\" > /tmp/patch.json && kubectl patch kuberoapps \"\$APP\" -n <NAME> --type=merge --patch-file /tmp/patch.json"
patch.json file containing:
The printf command generates a JSON file with the following structure (example values):
{
"spec": {
"image": {
"repository": "registry.example.com",
"tag": "main-EXAMPLE-1763035897983-20251113-1211"
}
}
}
Debug information
No response
Which component(s) is affected?
No response
Describe the bug
Kubero operator generates a deploy command with escaped quotes that fail in shell:
sh -c "kubectl patch kuberoapps $APP --type=merge -p \"{\"spec\":{\"image\":{\"repository\": \"$REPOSITORY\",\"tag\": \"$TAG\"}}}\""When sh -c executes this, the escaped quotes " inside the double-quoted string are misinterpreted, causing malformed JSON.
Causing:
Error from server (BadRequest): error decoding patch: invalid character 's' looking for beginning of object key string
Fix:
Use
--patch-fileinstead of inline JSON patch.Steps to reproduce
buildstrategy: dockerfile
deploymentstrategy: git
autodeploy: true
Expected behavior
The deploy step should successfully patch the KuberoApp resource with the new image repository and tag.
-> Build and deployed application
Screenshots
No response
Additional information
When Kubero creates a build job for GitOps deployment, the deploy container uses an inline JSON patch command that fails due to shell quoting issues:
Actual command generated by Kubero (from job spec):
The escaped quotes
\"inside the double-quoted string insh -care not properly handled. When executed, the shell misinterprets the JSON structure, resulting in malformed JSON being sent to the Kubernetes API.Suggested Fix
Replace the inline JSON patch with
--patch-fileapproach:Current (broken):
sh -c "kubectl patch kuberoapps $APP --type=merge -p \"{\"spec\":{\"image\":{\"repository\": \"$REPOSITORY\",\"tag\": \"$TAG\"}}}\""Suggested fix:
sh -c "printf '{\"spec\":{\"image\":{\"repository\":\"%s\",\"tag\":\"%s\"}}}' \"\$REPOSITORY\" \"\$TAG\" > /tmp/patch.json && kubectl patch kuberoapps \"\$APP\" -n <NAME> --type=merge --patch-file /tmp/patch.json"patch.json file containing:
The
printfcommand generates a JSON file with the following structure (example values):{ "spec": { "image": { "repository": "registry.example.com", "tag": "main-EXAMPLE-1763035897983-20251113-1211" } } }Debug information
No response