Sidecar container: cosa sono e come funzionano

  • Di
  • 2024-03-26 - 2 minuti
banner

Pattern strutturali e dove trovarli: analizziamo il sidecar container, cos’è e come funziona.

Definizione

Un Sidecar container estende e migliora le funzionalità di un container preesistente, senza modificarlo.

Questo modello è uno di quelli fondamentali nel dominio dei container perché permette ai container single-purpose di cooperare strettamente tra loro.

Il pattern Sidecar descrive questo tipo di collaborazione in cui un container migliora la funzionalità di un altro container.

In pratica…

Un esempio tipico usato per dimostrare questo pattern è quello di un server HTTP e di un sistema per la sincronizzazione con Git.

Il container del server HTTP si concentra solo sull’attività di servire i file dell’applicazione web tramite un server e non sa come e da dove provengono i file. Allo stesso modo, il container Git ha come unico obiettivo quello di sincronizzare i dati da un server al filesystem locale, senza preoccuparsi di come questi verranno utiizzati.

Questo esempio mostra come il sincronizzatore di Git migliora il comportamento del server HTTP con i contenuti da esporre mantenendoli sincronizzati:

apiVersion: v1
kind: Pod
metadata:
  name: web-app
  labels:
    project: k8spatterns
    pattern: Sidecar
spec:
  containers:
    - name: app
      image: centos/httpd
      ports:
        - containerPort: 80
      volumeMounts:
        - mountPath: /var/www/html
          name: source
    - name: poll
      image: bitnami/git
      env:
        - name: SOURCE_REPO
          value: https://github.com/mdn/beginner-html-site-scripted
      command: [ "sh", "-c" ]
      args:
        - |
          git clone $(SOURCE_REPO) .
          while true; do
            sleep 60
            git pull
          done          
      workingDir: /var/lib/data
      volumeMounts:
        - mountPath: /var/lib/data
          name: source
  volumes:
    - emptyDir: {}
      name: source

Potremmo anche dire che entrambi i container collaborano e sono ugualmente importanti, ma in un modello Sidecar, c’è sempre un container definito come principale e un container di supporto (o ausiliario) che migliora il comportamento del server HTTP.

In genere, il container principale è il primo nella definizione dello YAML del Pod e rappresenta il container predefinito.

Questo semplice schema, illustrato in figura, rappresenta la collaborazione dei container in fase di esecuzione, e allo stesso tempo consente la separazione delle responsabilità per entrambi i container, che potrebbero essere di proprietà di team diversi, che utilizzano linguaggi di programmazione diversi, con cicli di rilascio diversi, e via dicendo.

Inoltre, questo pattern promuove inoltre la sostituibilità e il riutilizzo dei container, in quanto il server HTTP e il sincronizzatore Git possono essere riutilizzati in altre applicazioni e configurazioni diverse.

Risorse utili

  • Docker - per cominciare bene con Docker e Kubernetes
  • Kubernetes - Guida per gestire e orchestrare i container

Post correlati

Iscriviti al TheRedCode.it Corner

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome

Vuoi diventare #tech content writer? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!