Невозможно запустить модули в AKS с пользователем без полномочий root

Я развертывал образы докеров с привилегиями root в AKS, затем во время тестов сонара он жаловался на это. Я пытаюсь запустить модули без пользователя root, но в этом сценарии модули не работают. Я не уверен, ему нужны дополнительные привилегии. Я создаю пользователя без полномочий root в файле докера, я также видел, что мы можем установить контекст безопасности в файле deployment.yaml в AKS. Итак, должен ли я попробовать это или мне нужно добавить дополнительные привилегии при добавлении пользователя в файл докера.

Подам необходим доступ к карте конфигурации, которая является частью монтирования тома.

Вот мой файл докера

FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build
WORKDIR /src
COPY ["WK.CO.Test.API/WK.CO.Test.API.csproj", "WK.CO.Test.API/"]
RUN dotnet restore "WK.CO.Test.API/WK.CO.Test.API.csproj"
COPY . .
WORKDIR "/src/WK.CO.Test.API"
RUN dotnet build "WK.CO.Test.API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WK.CO.Test.API.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# Create a group and user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# Run as appuser user
USER appuser
ENTRYPOINT ["dotnet", "WK.CO.Test.API.dll"]

Вот файл развертывания AKS

**Обновление, добавлены сведения об ошибке. стручки находятся в состоянии сбоя

  containerStatuses:
  - containerID: containerd://77b18f19cc635d405c59c5d63baae8e4f745a91e8074217ed8334b0fd3d48387
    image: test.azurecr.io/testsvc:1.0.0
    imageID: test.azurecr.io/testsvc@sha256:07c0399a40e7c76590f44a5b34f35305d32024e66b32b851b829819ac0060058
    lastState:
      terminated:
        containerID: containerd://77b18f19cc635d405c59c5d63baae8e4f745a91e8074217ed8334b0fd3d48387
        exitCode: 137
        finishedAt: "2023-04-05T05:48:28Z"
        reason: Error
        startedAt: "2023-04-05T05:48:28Z"
    name: testapi
    ready: false
    restartCount: 3
    started: false
    state:
      waiting:
        message: back-off 40s restarting failed container=testapi pod=testservice-deployment-6fd454bcc4-gzqbh_testservices-test(c38c1cf0-6fa7-44bd-b550-532d019b2d97)
        reason: CrashLoopBackOff

обновил информацию об ошибке.

threeleggedrabbit 05.04.2023 07:54

возможно, поделитесь kubectl describe pod %name% и логами внутри модуля, если он когда-нибудь запустится?

4c74356b41 05.04.2023 07:57

нет, стручок не запускается. Ошибка сервера (NotFound): модули «testservice-deployment-6fd454bcc4-k6f5r» не найдены

threeleggedrabbit 05.04.2023 08:18
kubectl get events?
4c74356b41 05.04.2023 08:57

не могу получить много информации, суть в ней gist.github.com/PrakashRajanSakthivel/…

threeleggedrabbit 05.04.2023 10:42
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
5
99
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я могу решить это. Я восстановил все параметры контекста безопасности из файла Deployment.yaml AKS. и я обновил файл докера, чтобы открыть порт, отличный от 1024. Итак, я открыл 8080, а также убедился, что контейнер прослушивает порт. Вот обновленный файл докера. После развертывания, если я открою модуль в терминале и проверю идентификатор, у него будет какой-то случайный идентификатор, отличный от 0 (это root)

FROM mcr.microsoft.com/dotnet/aspnet:6.0-alpine AS base
RUN apk update
WORKDIR /app
EXPOSE 8080
ENV ASPNETCORE_ENVIRONMENT = "Release"
ENV ASPNETCORE_URLS=http://*:8080

FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build
WORKDIR /src
RUN apk add --no-cache bash
RUN apk --no-cache add curl
COPY ["WK.CO.Test.API/WK.CO.Test.API.csproj", "WK.CO.Test.API/"]
COPY ./nuget.config ./
RUN dotnet restore "WK.CO.Test.API/WK.CO.Test.API.csproj"
RUN rm ./nuget.config
COPY . .
WORKDIR "/src/WK.CO.Test.API"
RUN dotnet build "WK.CO.Test.API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WK.CO.Test.API.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# Create a group and user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# Run as appuser user
USER appuser
ENTRYPOINT ["dotnet", "WK.CO.Test.API.dll"]

Другие вопросы по теме