Câu trả lời an toàn hơn
Câu trả lời được chấp nhận cấp cho quản trị viên quyền truy cập đầy đủ vào Helm, đây không phải là giải pháp tốt nhất về bảo mật. Với một chút công việc nữa, chúng ta có thể hạn chế quyền truy cập của Helm vào một không gian tên cụ thể. Thêm chi tiết trong tài liệu Helm .
$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created
Xác định một Vai trò cho phép Tiller quản lý tất cả các tài nguyên tiller-world
như trong role-tiller.yaml
:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller-manager
namespace: tiller-world
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]
Sau đó chạy:
$ kubectl create -f role-tiller.yaml
role "tiller-manager" created
Trong rolebinding-tiller.yaml
,
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller-binding
namespace: tiller-world
subjects:
- kind: ServiceAccount
name: tiller
namespace: tiller-world
roleRef:
kind: Role
name: tiller-manager
apiGroup: rbac.authorization.k8s.io
Sau đó chạy:
$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created
Sau đó, bạn có thể chạy helm init
để cài đặt Tiller trong tiller-world
không gian tên.
$ helm init --service-account tiller --tiller-namespace tiller-world
Bây giờ tiền tố tất cả các lệnh bằng --tiller-namespace tiller-world
hoặc đặt TILLER_NAMESPACE=tiller-world
trong các biến môi trường của bạn.
Thêm câu trả lời bằng chứng trong tương lai
Ngừng sử dụng Tiller. Helm 3 loại bỏ hoàn toàn nhu cầu về Tiller. Nếu bạn đang sử dụng Helm 2, bạn có thể sử dụng helm template
để tạo yaml từ biểu đồ Helm và sau đó chạy kubectl apply
để áp dụng các đối tượng vào cụm Kubernetes của bạn.
helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml
--clusterrole=cluster-admin
, chắc chắn sẽ khắc phục sự cố về quyền, nhưng có thể không phải là cách bạn muốn. Tốt hơn hết là bạn nên tạo tài khoản dịch vụ, vai trò (cụm) và liên kết vai trò (cụm) với các quyền chính xác mà bạn cần.