Исключение запуска для контейнера докеров основного рабочего aspnet, пытающегося установить секрет из переменной env в KC#

Место общения программистов C#
Ответить
Anonymous
 Исключение запуска для контейнера докеров основного рабочего aspnet, пытающегося установить секрет из переменной env в K

Сообщение Anonymous »

Я пытаюсь установить секреты в рабочем приложении aspnet core (3.0 SDK), которое работает в контейнере в Kubernetes. Я могу заставить приложение использовать секреты переменных среды, когда я запускаю его с помощью Visual Studio 2019 в локальном контейнере докеров и в контейнере локального экземпляра Kubernetes в Windows. Это контейнер Linux.

Однако, когда я развертываю его в AKS, при запуске приложение не запускается. Вылетает с ошибкой:

Код: Выделить всё

Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused process_linux.go:449: container init caused setenv: invalid argument: unknown
Я почти уверен, что секреты развернуты правильно, как показано ниже.

Я ношу это с собой определив свои секреты с помощью yaml, аналогично приведенному ниже. Развертывание осуществляется Azure Devops. Значения токена __ заменяются одной из задач конвейера. Я могу проверить значения на странице секретов экземпляра AKS на панели мониторинга и убедиться, что они развернуты правильно.

Код: Выделить всё

apiVersion: v1
kind: Secret
metadata:
name: paymentservicesettings
type: Opaque
data:
dbconnectionstring: __dbconnectionstringbase64__
storagebaseurl: __storagebaseurlbase64__
storageconnectionstring: __storageconnectionstringbase64__
baseuri: __baseuribase64__
subscriptionkey: __subscriptionkeybase64__
userid: __useridbase64__
usersecret: __usersecretbase64__


где находятся valuesbase64 Строки в кодировке Base 64.

Я запускаю это с помощью команды kubectl apply -f appsettings.yml. Я вижу, что настройки определены правильно, когда проверяю их через панель управления.

Затем я определяю развертывание следующим образом:

Код: Выделить всё

apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
generation: 1
labels:
run: payment-service
name: payment-service
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 3
revisionHistoryLimit: 10
selector:
matchLabels:
run: payment-service
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
run: payment-service
spec:
containers:
- image: org.azurecr.io/payment-service:__tagBuildId__    // **this tag is auto replaced for every deployment**
imagePullPolicy: IfNotPresent
name: payment-service
env:
- name: "ASPNETCORE_ENVIRONMENT"
value: "Kubernetes"
- name: "dbconnectionstring"
valueFrom:
secretKeyRef:
name: paymentservicesettings
key: dbconnectionstring

- name: "storagebaseurl"
valueFrom:
secretKeyRef:
name: paymentservicesettings
key: storagebaseurl

- name: "storageconnectionstring"
valueFrom:
secretKeyRef:
name: paymentservicesettings
key: storageconnectionstring

- name: "baseuri"
valueFrom:
secretKeyRef:
name: paymentservicesettings
key: baseuri

- name: "subscriptionkey"
valueFrom:
secretKeyRef:
name: paymentservicesettings
key: subscriptionkey

- name: "userid"
valueFrom:
secretKeyRef:
name: paymentservicesettings
key: userid

- name: "usersecret"
valueFrom:
secretKeyRef:
name: paymentservicesettings
key: usersecret

dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
imagePullSecrets:
- name: acr-auth


Когда я впервые развертываю службу, она загружается правильно и затем пытается запуститься. К сожалению, кажется, что он не может найти переменные env и происходит сбой. Из-за сбоя модулей я не могу выполнить отладку и выяснить, почему они это делают.

Я рассматривал возможность отладки через Azure Dev Spaces, но это похоже, что в настоящее время это не поддерживается для рабочих служб.

Я постарался обеспечить как можно больше кода обработки исключений на стороне C#, чтобы предотвратить сбои запуск, но это не имеет никакого значения

Может ли кто-нибудь подсказать, почему происходит сбой модулей и что я могу с этим поделать?
спасибо

Подробнее здесь: https://stackoverflow.com/questions/597 ... o-set-secr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»