Jawaban Lebih Aman
Jawaban yang diterima memberikan akses admin penuh ke Helm yang bukan merupakan solusi keamanan terbaik yang bijaksana. Dengan sedikit usaha lagi, kita dapat membatasi akses Helm ke namespace tertentu. Detail selengkapnya ada di dokumentasi Helm .
$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created
Tentukan Peran yang memungkinkan Tiller untuk mengelola semua sumber daya tiller-world
seperti di 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: ["*"]
Lalu lari:
$ kubectl create -f role-tiller.yaml
role "tiller-manager" created
Dalam 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
Lalu lari:
$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created
Setelah itu Anda dapat menjalankan helm init
untuk menginstal Tiller di tiller-world
namespace.
$ helm init --service-account tiller --tiller-namespace tiller-world
Sekarang awali semua perintah dengan --tiller-namespace tiller-world
atau setel TILLER_NAMESPACE=tiller-world
di variabel lingkungan Anda.
Lebih Banyak Jawaban Bukti Masa Depan
Berhenti menggunakan Tiller. Helm 3 menghilangkan kebutuhan Tiller sepenuhnya. Jika Anda menggunakan Helm 2, Anda dapat menggunakan helm template
untuk menghasilkan yaml dari bagan Helm Anda dan kemudian menjalankan kubectl apply
untuk menerapkan objek ke klaster Kubernetes Anda.
helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml
--clusterrole=cluster-admin
, yang pasti akan memperbaiki masalah izin, tetapi mungkin bukan perbaikan yang Anda inginkan. Lebih baik membuat akun layanan Anda sendiri, peran (cluster), dan rolebindings (cluster) dengan izin tepat yang Anda butuhkan.