Khi bạn cài đặt biểu đồ bằng Helm, nó thường mong đợi mỗi bản phát hành để có bộ đối tượng Kubernetes độc lập của riêng nó. Trong ví dụ cơ bản mà bạn hiển thị, tôi mong đợi thấy các đối tượng Dịch vụ Kubernetes có tên giống như
release-a-application-a
release-a-redis
release-b-application-b
release-b-redis
Có một quy ước chung rằng các đối tượng được đặt tên bắt đầu bằng {{ .Release.Name }}
, vì vậy hai Redises là riêng biệt.
Đây thực sự là một thiết lập được mong đợi. Một quy tắc điển hình của việc xây dựng microservices là mỗi dịch vụ chứa bộ nhớ riêng biệt và các dịch vụ không bao giờ chia sẻ bộ nhớ với nhau. Mẫu Helm này hỗ trợ điều đó và thực sự không có gì bất lợi khi thiết lập này.
Nếu bạn thực sự muốn hai biểu đồ chia sẻ một cài đặt Redis duy nhất, bạn có thể viết biểu đồ "ô" không tự làm bất cứ điều gì mà phụ thuộc vào hai biểu đồ ứng dụng. Biểu đồ sẽ có Chart.yaml
tệp và (trong Helm 2) a requirements.yaml
tệp tham chiếu đến hai biểu đồ khác, nhưng không phải là templates
thư mục của riêng nó. Điều đó sẽ khiến Helm kết luận rằng một Redis duy nhất có thể hỗ trợ cả hai ứng dụng và bạn sẽ kết thúc với một cái gì đó như
umbrella-application-a
umbrella-application-b
umbrella-redis
(Theo kinh nghiệm của tôi, bạn thường không muốn cái này - bạn làm muốn có một Redis riêng cho mỗi ứng dụng - và do đó, việc cố gắng quản lý nhiều cài đặt bằng biểu đồ ô không hoạt động đặc biệt tốt.)