#2082·kompose

[BUG] Double base64 encoding in configmap.yaml

Author: kkawaharanetCreated Jan 19, 2026Updated Jul 18, 2026
Labelskind/bug

Expected Behavior

The binaryData field in configmap.yaml should contain the base64-encoded content.

Actual Behavior

The binaryData field in configmap.yaml contains double base64-encoded data. When decoded once, the result is still a base64 string instead of raw binary data.

Steps To Reproduce

Directory structure

.
├── docker-compose.yml
└── html
     ├── image.png (anything is fine)
     └── index.html

index.html

xml
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <img src="image.png" alt="image" />
  </body>
</html>

docker-compose.yml

yaml
services:
  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    restart: always
    volumes:
      - ./html:/usr/share/nginx/html:ro
bash
$ kompose convert --file docker-compose.yml -o ./nginx-manifests/
$ minikube start
$ kubectl apply -f ./nginx-manifests/
$ kubectl port-forward service/nginx 8080:8080
Image

image.png is not shown correctly.

The binaryData field in configmap.yaml seems to be contained double base64-encoded data.

Attempting to fix it manually:

diff
apiVersion: v1
binaryData:
  # image.png: aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtDQU1BQUFCSFBHVm1BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFKMlVFeFVSZi8vLy9yNit0bloyYUdob1dOalkwMU5UVlpXVm9LQ2dzYkd4dkx5OHYzOS9lM3Q3ZERRMElpSWlEZzRPQllXRmc0T0RoZ1lHQjRlSGh3Y0hCTVRFeElTRWtCQVFNVEV4UHo4L1BmMzkrWGw1YSt2cjFCUVVDUWtKQWtKQ1NjbkoySmlZdUxpNHVibTVzL1B6M056Yy9uNStmSHg4ZHJhMnFLaW9sVlZWVE16TXhjWEZ3VUZCVUZCUWNqSXlQRHc4UDcrL3RMUzBrbEpTVXBLU3RYVjFmdjcrNk9qbzFoWVdDMHRMUkFRRUFZR0JqQXdNRlJVVksydHJZR0JnUm9hR21ob2FQWDE5YzNOelhGeGNTa3BLUlFVRkRZMk5teHNiTHU3dStucDZmYjI5c1BEdzA5UFR5SWlJdTd1N3B5Y25ENCtQaVltSmp3OFBHVmxaYmUzdCtmbjU3Ky92NWFXbGhVVkZXZG5aN3k4dk5mWDF6azVPZVRrNUp1Ym13OFBENGVIaCtqbzZPcnE2bWxwYVltSmlRb0tDaTR1THJTMHRMT3pzNHlNalBqNCtDTWpJelEwTkV0TFMvVDA5TEd4c2JxNnVtQmdZR1ptWnQzZDNTRWhJZHpjM0M4dkw3YTJ0bUZoWVVWRlJabVptYWVucDVDUWtOalkyREV4TVo2ZW50N2UzbXRyYTliVzFpb3FLc3ZMeTcyOXZibTV1WEJ3Y0pXVmxRME5EVkpTVWtKQ1F1dnI2em82T3RIUjBRc0xDMzUrZnR2YjIxOWZYOExDd3V6czdJT0RnN2k0dUVaR1JsRlJVWXVMaTFwYVdzWEZ4YVdscFN3c0xMNit2cEtTa3NIQndXcHFhakl5TWt4TVRCc2JHNUdSa1QwOVBlL3Y3eUFnSUVkSFIyOXZieVVsSlRzN08zaDRlSjJkbmFtcHFSRVJFWFYxZGRQVDArSGg0Wk9UazNKeWNwK2ZuNnlzckNnb0tMS3lzcWlvcUFnSUNCOGZIM1IwZEVSRVJCa1pHWUNBZ0tTa3BDc3JLMXRiVzNsNWVYeDhmTTdPem8rUGovUHo4OERBd0F3TURLYW1wc25KeWJXMXRkVFUxQjBkSFhaMmRrNU9Ubmp0UU9FQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUFaZEVWWWRGTnZablIzWVhKbEFGQmhhVzUwTGs1RlZDQTFMakV1TVRHS0NCYk9BQUFBdUdWWVNXWkpTU29BQ0FBQUFBVUFHZ0VGQUFFQUFBQktBQUFBR3dFRkFBRUFBQUJTQUFBQUtBRURBQUVBQUFBQ0FBQUFNUUVDQUJFQUFBQmFBQUFBYVljRUFBRUFBQUJzQUFBQUFBQUFBR0FBQUFBQkFBQUFZQUFBQUFFQUFBQlFZV2x1ZEM1T1JWUWdOUzR4TGpFeEFBQURBQUNRQndBRUFBQUFNREl6TUFHZ0F3QUJBQUFBQVFBQUFBV2dCQUFCQUFBQWxnQUFBQUFBQUFBQ0FBRUFBZ0FFQUFBQVVqazRBQUlBQndBRUFBQUFNREV3TUFBQUFBQUdOZFJ6c285eU93QUFBL1pKUkVGVWFFUHQyT2xmRWtFWUIvQ0ZOQXNyUUJZakZJd1NDOEhjRGxLMElrMUk4U2dybERJakxEdnNMclBUSThvTzBpelRMc3ZLTEx1ais2Q3krejcvb3o1WUw1WW4zSjFaNkZYN2ZmbmJYWjZkbldGbWRnbUN4K1B4ZUR3ZWovZi9FZ2dIUkVRT2pCbzBHQjRJRjFIMGtLSER4Qkpwakl5VXh3NVh3TU5oTUVJWkY2K1NxQk5HeG1sR0tVY25Tc1ZSV25oS2FKTEdqTlVsNnczaWxLaHhxYjhUYXZ3RXc4UkpSbmdpUjlyQll5YW5wWnN5OUpsVHBpcEgwQTRJcGtuTjA0VWlXc0pSVnZhTTJCeUxSR2FkbVp0bm84QkJSWDZCdUhBc1RIRVZ6Wm90dGhUUG1UdlAvbGVCMzJ3bDZhYlNrSHFHRXM1eHFPWXZTR1Y4SUdVTFRXbmxNRVJuWEZUc1hPeGk3ZG1LSlphRXVPRHRaS2RZV3Jsc09jckZnaFdGa3BWVk1FVkM1YTlhWFk1U2d5QUk0UnJUOUxVd1JMSE9JVnNQczM0bGJUQnR0TUdRM2FhRTZuekVkdmhsTFRGc3dLNnl1Y2F4QldhTUJGc2RLekZ1eWsrN1RiNGQ4NUxvMlpJZGpHTWRFdTAwUkdGZDRGZGJaNjdIdWJFRzFUQU9pMFZaT29ueGZ6SHVJdEVIRm8xN3R4UzlJOTB4a2RnanBjK2U2c0pzbVBWREZLOHZnUm1pUm5OZEJjeUMyNXV4ajNYQzZnZTEvOEJXQVF5RG9Ueml6VEJEcHBoZnVSVGxEb3RVQjduMVNKK21abjBwd3Y3aVVNdGhHT0U0MG14b1paOHNTdzFIWVlTbExjM1NEak9JMG9udE1NUFRaalc3WVFiWXJNbjBIUWtYeHh6SHMyQVdLRHJtQkl4d2lVNGFJcGhYU3FFenBIN3ZZenlsbnd5ekFCM3EwekRDcHpsVDNBWXp1azQxcDhrUk9PczhCeU82RW5VdWpEZ1lUNTZIRVYxNGlxenR5bVJha1RyRFVvUzZJTXVER1UybmVnR011UEIwdTJCRTA2RmVCeU11NG1WTVJjcGFMc0tJaXdMR0lrckhUQmh4d1Z6RTNoMFBJeTRpR1l1NFpBVXc0a0I3NlV3UnpHamFxcTJoenNJRVFmUmN2c0s0UGw2MU1FOXVTT1psRElWUmdMeHIxMWxXQTNhYVpMTUdab0Z1eUcraTd6YURTbDFqdXNYeUV5NnJkdy9Nc0RSRnltK3oxQ0NJTzQ1bXBxSEI1cTVIZlpYOWdWUDNuUGVSOW9GQnVlc2NJMW5iNGY5U004WHlBT1c4SUd3UEgwbjJvMjBPaFYzZXh6QkRrZnBrZ3ErbUVmWCtoTVhYYW1IR1J1RWUwRXcrZmRZRTgvNGRJMU13TzMvUWM3T2s5MFU1em1zZzFlNU5aSndZL3ZKU3BWdC9GNFlzYksyKzA2Z1B0NCt4Z3NQWG9yeFhPU0Z1aWxIVW16WnkvN2VncW5ydGZjTzByd21QaHRpVzFhMzFmNzVyL2pQYXQxM2RaTTJMZHhWNDR3eVRvbWZUKzB5Sk55ZWlKQXRycEdINzBORytqYXpNVFB5b1RQcW5oYXJjaDYyZk11VHBFM1hQUGplZXE3VzcvcndYR08xZnZpN1BEbDlwMjdlYjV4Zktla21mejNkQTJ2djlZSUhINC9Ha1BKVTduYXN3Sml0MmxLM0hwUm5lK2ZpSHpuUDhVWXhmNGMrVGUzUGZoYThsZ1JSRkxqOHVFd21QeCtPRnhTOGFVOUkxMDhISHJRQUFBQUJKUlU1RXJrSmdnZz09
  image.png: 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
data:
  index.html: |
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
      </head>
      <body>
        <img src="image.png" alt="image" />
      </body>
    </html>
kind: ConfigMap
metadata:
  labels:
    io.kompose.service: nginx
  name: nginx-cm0
bash
$ kubectl apply -f ./nginx-manifests/
$ kubectl rollout restart deployment nginx
$ kubectl port-forward service/nginx 8080:8080
Image

Kompose Version

1.38.0 (a8f5d1cbd)

Docker-Compose file

yaml
services:
  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    restart: always
    volumes:
      - ./html:/usr/share/nginx/html:ro

Anything else?

No response