AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1160493
Accepted
Lasse Michael Mølgaard
Lasse Michael Mølgaard
Asked: 2024-06-06 05:37:11 +0800 CST2024-06-06 05:37:11 +0800 CST 2024-06-06 05:37:11 +0800 CST

Construir contêiner SAMBA AD DC com Docker e Kubernetes fornece conteúdo errado aos volumes

  • 772

Estou construindo um contêiner para Kubernetes que executa um controlador de domínio SAMBA Active Directory.

Estou fazendo o trabalho por meio do Ansible e o contêiner está sendo implantado em um cluster Kubernetes (K3S).

O Docker está usando os seguintes arquivos como parte de sua construção:

etc/krb5.conf
etc/bind/rndc.key
etc/bind/named.conf.local
etc/bind/db.0
etc/bind/db.255
etc/bind/db.empty
etc/bind/named.conf.options
etc/bind/db.local
etc/bind/named.conf
etc/bind/db.127
etc/bind/named.conf.default-zones
etc/supervisor/conf.d/supervisord.conf
etc/freeradius/3.0/mods-available/eap
etc/freeradius/3.0/mods-available/realm
etc/freeradius/3.0/mods-available/ntlm_auth
etc/freeradius/3.0/mods-available/mschap
etc/freeradius/3.0/clients.conf
etc/freeradius/3.0/proxy.conf
etc/freeradius/3.0/sites-available/default
etc/freeradius/3.0/sites-available/inner-tunnel
boot/init.sh
boot/kdb5_util_create.expect
Dockerfile

A ideia é que para todos os arquivos o caminho seja o mesmo dentro do container, mas /como prefixo.

No entanto, me deparei com algo estranho ao inspecionar o contêiner em execução que foi compilado como resultado.

A execução do contêiner SAMBA fornece conteúdo errado

O conteúdo de /etc/samba, /etc/binde /etc/freeradiusdefinitivamente não deveria ser o mesmo!

O conteúdo do meu Dockerfileé o seguinte:

FROM ubuntu:noble

ENV DEBIAN_FRONTEND noninteractive

# Avoid ERROR: invoke-rc.d: policy-rc.d denied execution of start.
RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d

VOLUME ["/var/lib/samba", "/etc/samba", "/etc/bind", "/etc/freeradius", "/SambaVolume"]

# Setup ssh and install supervisord
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y openssh-server supervisor ntp mc
RUN mkdir -p /var/run/sshd
RUN mkdir -p /var/log/supervisor
RUN sed -ri 's/PermitRootLogin without-password/PermitRootLogin Yes/g' /etc/ssh/sshd_config

# Add SAMBA VolumeShare location
RUN mkdir -p /SambaVolume

# Install bind9 dns server
RUN apt-get install -y bind9 dnsutils
# Copy tweaked DNS setttings (instead of ADD, due to we want to overwrite any existing files)
COPY etc/bind/* /etc/bind/

# Install samba and dependencies to make it an Active Directory Domain Controller
RUN apt-get install -y samba smbclient winbind libpam-winbind libnss-winbind krb5-kdc libpam-krb5

# Install Freeradius so validate VPN users against samba
RUN apt-get install -y freeradius

# Copy Freeradius customised files
COPY etc/freeradius/ /etc/freeradius/

# Copy customized kerberos configuration file
COPY etc/krb5.conf /etc/

# Install utilities needed for setup
RUN apt-get install -y expect pwgen
ADD boot/kdb5_util_create.expect /root/kdb5_util_create.expect

# Install rsyslog to get better logging of ie. bind9
RUN apt-get install -y rsyslog

# Create run directory for bind9
RUN mkdir -p /var/run/named
RUN chown -R bind:bind /var/run/named

# Add supervisord and init
ADD etc/supervisor/conf.d/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ADD boot/init.sh /root/init.sh
RUN chmod 755 /root/init.sh
EXPOSE 53/tcp 53/udp 80/tcp 80/udp 88/tcp 88/udp 135/tcp 135/udp 137/tcp 137/udp 
EXPOSE 138/tcp 138/udp 389/tcp 389/udp 443/tcp 443/udp 445/tcp 445/udp 464/tcp 464/udp 
EXPOSE 636/tcp 636/udp 3268/tcp 3268/udp 3269/tcp 3269/udp 9389/tcp 9389/udp
EXPOSE 123/udp 22/tcp 22/udp
ENTRYPOINT ["/root/init.sh"]
CMD ["app:start"]

E o contêiner compilado está sendo armazenado em um registro local usando os seguintes comandos:

  docker build -t samba:latest samba/
  docker tag samba:latest registry.example.com:5000/samba:latest
  docker push registry.example.com:5000/samba:latest  

Ele está sendo implantado através do Ansible com a seguinte tarefa:

- name: Create SAMBA Deployment
  kubernetes.core.k8s:
    state: present
    definition:
      apiVersion: apps/v1
      kind: StatefulSet
      metadata:
        name: samba
        namespace: samba-system
        labels:
          app: samba
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: samba
        template:
          metadata:
            labels:
              app: samba
          spec:
            volumes:
              - name: samba-config
                persistentVolumeClaim:
                  claimName: samba-config-vol

            containers:
              - name: samba
                image: registry.example.com:5000/samba:latest
                ports:
                  - containerPort: 123
                    protocol: UDP

#           ### SKIPPING ###

                 - containerPort: 9389
                    protocol: UDP
                  - containerPort: 9389
                    protocol: TCP

                volumeMounts:
                  - name: samba-config
                    mountPath: /etc/samba
                  - name: samba-config
                    mountPath: /etc/bind
                  - name: samba-config
                    mountPath: /etc/freeradius
                  - name: samba-config
                    mountPath: /var/lib/samba

                envFrom:
                  - configMapRef:
                      name: samba-environment-map

                securityContext:
                  priviledged: true
                  allowPrivilegeEscalation: true
                  readOnlyRootFilesystem: false

                  capabilities:
                    add:
                      - ALL

Estou me perguntando por que o conteúdo das pastas /etc/bindé /etc/sambao /etc/freeradiusmesmo.

Pensei ter lido em algum lugar que você poderia usar o mesmo persistentVolumeClaimpara todas as pastas.

docker
  • 1 1 respostas
  • 62 Views

1 respostas

  • Voted
  1. Best Answer
    Peter Zhabin
    2024-06-07T17:12:18+08:002024-06-07T17:12:18+08:00

    Isso acontece porque você monta um único volumenome samba-configem vários arquivos volumeMounts. Pense nisso como montar o mesmo dispositivo de bloco em diferentes pontos de montagem no Linux (no modo ro, é claro) - você obterá o mesmo conteúdo em todos esses diretórios.

    • 2

relate perguntas

  • Ainda confuso por que o docker funciona quando você faz um processo ouvir 0.0.0.0, mas não 127.0.0.1

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve