Når du installerer et diagram ved hjælp af Helm, forventer det generelt hver udgivelse at have sit eget selvstændige sæt Kubernetes-objekter. I det grundlæggende eksempel, du viser, ville jeg forvente at se Kubernetes Service-objekter kaldet noget lignende
release-a-application-a
release-a-redis
release-b-application-b
release-b-redis
Der er en generel konvention om, at objekter navngives begyndende med {{ .Release.Name }}
, så de to Redises er adskilte.
Dette er faktisk en forventet opsætning. En typisk regel for opbygning af mikrotjenester er, at hver tjeneste indeholder sit eget isolerede lager, og at tjenester aldrig deler lager med hinanden. Dette Helm-mønster understøtter det, og der er ikke rigtig nogen ulempe ved at have denne opsætning.
Hvis du virkelig ønsker, at de to diagrammer skal dele en enkelt Redis-installation, kan du skrive et "paraply"-diagram, der ikke gør noget alene, men afhænger af de to applikationsdiagrammer. Diagrammet ville have en Chart.yaml
fil og (i Helm 2) en requirements.yaml
fil, der refererer til de to andre diagrammer, men ikke en templates
sin egen mappe. Det ville få Helm til at konkludere, at en enkelt Redis kunne understøtte begge applikationer, og du ville ende med noget som
umbrella-application-a
umbrella-application-b
umbrella-redis
(I min erfaring gør du normalt ikke ønsker dette – du gør ønsker en separat Redis pr. applikation – og så det virker ikke særlig godt at prøve at administrere flere installationer ved hjælp af et paraplydiagram.)