Então, estou tentando fazer o Nexus funcionar com base nessa imagem no Kubernetes, mas está falhando com:
mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied
mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory
A partir da documentação, diz que o processo é executado com o UID 200 e o volume deve ser montado com essas permissões:
A persistent directory, /nexus-data, is used for configuration,
logs, and storage. This directory needs to be writable by the Nexus
process, which runs as UID 200.
Tentei pesquisar na documentação para encontrar uma maneira de montar o volume com essas permissões, no entanto, não consegui encontrar nenhuma maneira de fazê-lo.
Alguém sabe se você pode especificar na configuração para o PVC / PV ou Deployment com que UID montar o volume? Se sim, como?
fonte
command: ["sh", "-c", "chmod 777 /nexus && chown 200:200 /nexus"]
para garantir que a pasta seja gravável.Como Anton disse, embora não possamos definir o UID usando a definição de Pod. Aí vem outra solução alternativa para este tópico.
Consulte o documento oficial do Kubernetes Configurar um contexto de segurança para um pod ou container
A definição de pod que eu usei:
A definição de serviço:
E, em seguida, crie pod e serviço sem nenhuma permissão negada ou outros erros:
Tente fazer login no contêiner Nexus3 e verifique o proprietário / permissão de / nexus-data:
Como você pode ver, o diretório pertence ao root: nexus, e você também pode verificar os arquivos no diretório:
Esse é o poder do SetGID :)
Agora vamos verificar se o serviço está funcionando ou não. Eu uso o minikube para executar um cluster kubernetes:
O serviço está funcionando conforme o esperado.
fonte
Em relação Torsten Bronger 's comentário , quando você configura ConfigMaps e segredos na matriz volumes na especificação pod, você pode especificar as permissões para permitir o acesso que pretende utilizar a
defaultMode
propriedade, por isso, enquanto você não pode definir grupo e de usuário propriedade, você pode permitir que processos no pod leiam arquivos nessas montagens. Gravar em um mapa secreto ou de configuração não faz muito sentido e o modo de permissão padrão é 755 de qualquer maneira, portanto, a leitura não deve ser um problema para nenhum usuário.fonte