Kubernetes cannot be handled as a Secret illegal base64 data when using environment variable

Viewed 38

I am trying to apply kubernetes code that was given for me. I am getting an error:

Error from server (BadRequest): error when creating "infra/ecr-creds/rendered.yml": Secret in version "v1" cannot be handled as a Secret: illegal base64 data at input byte 0

From what I understand, the error is coming from this:

apiVersion: v1
kind: Secret
metadata:
  name: aws-ecr-creds-secret
  namespace: whatever
  labels:
    app.kubernetes.io/name: aws-multi-ecr-credentials
    helm.sh/chart: aws-multi-ecr-credentials-1.4.3
    app.kubernetes.io/instance: aws-ecr-creds-novisign
    app.kubernetes.io/version: "1.4.3"
    app.kubernetes.io/managed-by: Helm
type: Opaque
data:
  AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
  AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}

I tried to set the AWS_ACCESS_KEY_ID variable using:

export AWS_ACCESS_KEY_ID=$(echo "...code..." | base64)

but it doesn't work. What is the proper way to do it?

1 Answers

You should use stringData:

apiVersion: v1
kind: Secret
metadata:
  name: aws-ecr-creds-secret
  namespace: whatever
  labels:
    app.kubernetes.io/name: aws-multi-ecr-credentials
    helm.sh/chart: aws-multi-ecr-credentials-1.4.3
    app.kubernetes.io/instance: aws-ecr-creds-novisign
    app.kubernetes.io/version: "1.4.3"
    app.kubernetes.io/managed-by: Helm
type: Opaque
stringData:
  AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
  AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}

Link references:
https://hub.docker.com/repository/docker/cuongquocvn/aws-cli-kubectl

Related