Я развертывал образы докеров с привилегиями 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
возможно, поделитесь kubectl describe pod %name%
и логами внутри модуля, если он когда-нибудь запустится?
нет, стручок не запускается. Ошибка сервера (NotFound): модули «testservice-deployment-6fd454bcc4-k6f5r» не найдены
kubectl get events
?
не могу получить много информации, суть в ней gist.github.com/PrakashRajanSakthivel/…
Я могу решить это. Я восстановил все параметры контекста безопасности из файла 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"]
обновил информацию об ошибке.