শিরোনাম তালিকা: নাম স্থান "কুবের-সিস্টেম" এ কনফিগারেশন তালিকা করতে পারে না


108

আমি কুবেরনেটস 8 ক্লাস্টারে হেলম 2.6.2 ইনস্টল করেছি। helm initভাল কাজ করেছে। তবে আমি যখন helm listএটি চালাচ্ছি তখন এই ত্রুটি ঘটছে।

 helm list
Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system"

এই আরএবিসি ত্রুটি বার্তাটি কীভাবে ঠিক করবেন?

উত্তর:


228

একবার এই আদেশগুলি:

kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'      
helm init --service-account tiller --upgrade

চালানো হয়েছিল, সমস্যা সমাধান করা হয়েছে।


10
নোট করুন যে এটি নির্ধারণ করে --clusterrole=cluster-admin, যা অবশ্যই অনুমতিগুলির সমস্যাগুলি ঠিক করবে, তবে আপনি যা ঠিক করতে চান তা নাও হতে পারে। আপনার নিজের যথাযথ অনুমতিগুলির সাথে নিজের পরিষেবা অ্যাকাউন্ট, (ক্লাস্টার) ভূমিকা এবং (ক্লাস্টার) রোলবাইন্ডিংগুলি তৈরি করা আরও ভাল।
কার্টিস ম্যাটুন

2
The accepted answer gives full admin access to Helm which is not the best solution security wise( স্ট্যাকওভারফ্লো . com/a/53277281/2777965 দেখুন )।
030

1
"init" চালানোর সময় অবশ্যই "- আপগ্রেড" থাকতে হবে, অন্যান্য প্রশ্নগুলির উল্লেখ নেই।
স্বর্নিং

আমি যখন চালাই kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'আমি পাইError from server (NotFound): deployments.extensions "tiller-deploy" not found
ম্যাগিক

36

আরও সুরক্ষিত উত্তর

গৃহীত উত্তর হেলমে পুরো অ্যাডমিনকে অ্যাক্সেস দেয় যা সুরক্ষার ভিত্তিতে সেরা সমাধান নয়। আরও কিছুটা কাজ করে আমরা কোনও নির্দিষ্ট নেমস্পেসে হেলমের অ্যাক্সেসকে সীমাবদ্ধ করতে পারি। হেলমের ডকুমেন্টেশনে আরও বিশদ ।

$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created

এমন একটি ভূমিকা সংজ্ঞায়িত করুন যা টিলারকে এর tiller-worldমতো সমস্ত সংস্থান পরিচালনা করতে দেয় 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: ["*"]

তারপরে চালান:

$ kubectl create -f role-tiller.yaml
role "tiller-manager" created

ইন 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

তারপরে চালান:

$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created

এরপরে আপনি নাম helm initস্থানে টিলার ইনস্টল করতে চালাতে পারেন tiller-world

$ helm init --service-account tiller --tiller-namespace tiller-world

আপনার কন্ডিশনাল ভেরিয়েবলের সাথে সমস্ত কমান্ডের উপস্থাপন করুন --tiller-namespace tiller-worldবা সেট করুন TILLER_NAMESPACE=tiller-world

আরও ভবিষ্যতের প্রুফ উত্তর

টিলার ব্যবহার বন্ধ করুন। হেলম 3 টিলার প্রয়োজন সম্পূর্ণরূপে সরিয়ে দেয়। যদি আপনি হেলম 2 ব্যবহার করে থাকেন তবে আপনি helm templateআপনার হেলম চার্ট থেকে ইয়ামাল তৈরি করতে ব্যবহার করতে পারেন এবং তারপরে kubectl applyআপনার কুবেরনেটস ক্লাস্টারে অবজেক্টগুলি প্রয়োগ করতে চালাতে পারেন।

helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml

1
দ্রষ্টব্য, একবার আপনি এটি করার পরে আপনাকে আপনার পরিবেশের ভেরিয়েবলগুলির সাথে সমস্ত হেলম কমান্ডের উপসর্গ --tiller-namespace tiller-worldবা সেট করতে হবে TILLER_NAMESPACE=tiller-world
স্পুডার

1
ভবিষ্যতের প্রমাণ উত্তরের সাথে পুরোপুরি একমত। হেলম লোকেরা বুঝতে পারে যে আরবিএসি স্টাফ জিনিসগুলি পরিচালনা করতে খুব জটিল করে তুলেছে। এগুলি কেবল আলফাতে রয়েছে তবে একটি নজর রাখার মতো মূল্য রয়েছে: হেলম 3, আলফা 1
রিচার্ড

1
সম্মত, আরবিএসি প্রথমে আপনার হাত পেতে কিছুটা। আমি এখনও এটি নিয়ে লড়াই করছি তবে অগ্রগতি করছি।
কোরিপার্পকিনস

অবিচ্ছিন্ন খণ্ডগুলি হেলমের দ্বারা গ্রহণযোগ্য অনুশীলনটি কী? আমাদের কি এই ক্ষেত্রে আরও একটি ক্লাস্টার-ভূমিকা এবং বাধ্যতামূলক তৈরি করা উচিত?
সাওয়ের

20

হেলম "ডিফল্ট" পরিষেবা অ্যাকাউন্ট দিয়ে চলে। আপনার এটির অনুমতি দেওয়া উচিত।

কেবল পঠনযোগ্য অনুমতিগুলির জন্য:

kubectl create rolebinding default-view --clusterrole=view --serviceaccount=kube-system:default --namespace=kube-system

অ্যাডমিন অ্যাক্সেসের জন্য: যেমন: প্যাকেজ ইনস্টল করতে।

kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

দৌড়াতে kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default, এবং তারপরে চালানোর পরে helm listআমি এখনও পেয়েছিError: configmaps is forbidden: User "system:serviceaccount:tiller:default" cannot list configmaps in the namespace "tiller": no RBAC policy matched
Magick

4

ডিফল্ট পরিষেবাদির অ্যাকাউন্টে এপিআই অনুমতি নেই। হেলমকে সম্ভবত একটি পরিষেবা অ্যাকাউন্ট এবং সেই পরিষেবা অ্যাকাউন্টটি দেওয়া হয়েছে যা এপিআই অনুমতি দেয় assigned পরিষেবা অ্যাকাউন্টগুলিতে অনুমতি দেওয়ার জন্য আরবিএসি ডকুমেন্টেশন দেখুন: https://kubernetes.io/docs/admin/authorization/rbac/#service-account-perifications


0
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

kubectl apply -f your-config-file-name.yaml

এবং তারপরে পরিষেবা অ্যাকাউন্ট ব্যবহারের জন্য হেলম ইনস্টলেশন আপডেট করুন:

helm init --service-account tiller --upgrade


0

অফলাইন মোডে টিলার ইনস্টল করার চেষ্টা করার সময় আমি এই ত্রুটিটি পেয়েছি, আমি ভেবেছিলাম 'টিলার' পরিষেবা অ্যাকাউন্টটির পর্যাপ্ত অধিকার নেই তবে এটি দেখা যাচ্ছে যে কোনও নেটওয়ার্ক নীতিই টিলার এবং এপিআই-সার্ভারের মধ্যে যোগাযোগকে অবরুদ্ধ করছে।

সমাধানটি হ'ল টিলারের জন্য একটি নেটওয়ার্ক নীতি তৈরি করা যা টিলারের সমস্ত ঠিকানা যোগাযোগের অনুমতি দেয়


0

export TILLER_NAMESPACE=<your-tiller-namespace>আমার জন্য এটি সমাধান করুন, যদি <your-tiller-namespace>না হয় kube-system। এটি হেলম ক্লায়েন্টকে ডান টিলার নামের স্থানটিতে নির্দেশ করে।


0

আপনি যদি এডাব্লুএস থেকে কোনও ইকেএস ক্লাস্টার ব্যবহার করেন এবং নিষিদ্ধ সমস্যার মুখোমুখি হন ( যেমন : forbidden: User ... cannot list resource "jobs" in API group "batch" in the namespace "default"তাহলে এটি আমার পক্ষে কাজ করেছে:

সমাধান:

  1. আপনি AWS কনফিগার করেছেন তা নিশ্চিত করুন
  2. কনফিগার করা ব্যবহারকারীর ক্লাস্টারে অ্যাক্সেসের অনুমতি রয়েছে তা নিশ্চিত করুন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.