Как написать configmap для app dotnetcore

#kubernetes

#kubernetes

Вопрос:

у меня есть docker-composes для app dotnetcore, я новичок в k8s, мое приложение имеет довольно длинную переменную. «ConnectionStrings__DefaultConnection», как показано ниже

       productstudio:
    volumes:
      - ${USERPROFILE}/.aws:/root/.aws
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ConnectionStrings__DefaultConnection=Username=someuser;Password=somepassword;Server=postgres;Port=5432;Database=somedb;Search Path=some
      - EventBus__Enable=true
      - EventBus__HostUri=rabbitmq://eventbus/
 

и я пишу configmap

 apiVersion: v1
kind: ConfigMap
metadata:
  name: be-productstudio-configmap
  labels:
    app: product-builder-be
    tier: backend
data:
  ASPNETCORE_ENVIRONMENT: Development
  EventBus__Enable: true
  EventBus__HostUri: rabbitmq://eventbus/
  ConnectionStrings__DefaultConnection: |-
    Username=someuser;
    Password=somepassword;
    Server=postgres;
    Port=5432;
    Database=somedb;
    Search Path=some
 

Но я получил сообщение об ошибке

 Error from server (BadRequest): error when creating "manifect-be.yml": ConfigMap in version "v1" cannot be handled as a ConfigMap: v1.ConfigMap.Data: ReadString: expects " or n, but found t, error found in #10 byte of ...|_Enable":true,"Event|..., bigger context ...|nSearch Path=productstudio"","EventBus__Enable":true,"EventBus__HostUri":"rabbitmq://eventbus/"},"k|...
 

Кто-нибудь может мне помочь, спасибо

Ответ №1:

Я вижу здесь две проблемы:

  1. Ошибка, которую вы видите, означает, что значение true for EventBus__Enable не заключено в кавычки, и оно обрабатывается как ключевое слово, которое означает логическое значение true . Переменные среды являются строками и должны быть заключены в кавычки в вашем определении yaml. Вам нужно сделать так, чтобы это выглядело примерно так:

   EventBus__Enable: "true"
 
  1. Вы не должны использовать пробелы в ключевых определениях вашего ConfigMap :

 Search Path=productstudio
 

как:

Каждый ключ в поле data или binaryData должен состоять из буквенно-цифровых символов, - , _ или . .

Вы можете использовать официальные документы для ссылки на правильно настроенные ConfigMaps, например:

 apiVersion: v1
kind: ConfigMap
metadata:
  name: game-demo
data:
  # property-like keys; each key maps to a simple value
  player_initial_lives: "3"
  ui_properties_file_name: "user-interface.properties"

  # file-like keys
  game.properties: |
    enemy.types=aliens,monsters
    player.maximum-lives=5
  user-interface.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true