Рубрики
Uncategorized

Отладка Kubernetes: Выполните команды kubectl со службойной учетной записью

Серия видео о Кубернетах. Объясняя в принципах визуального пути Кубернаны. Tagged с Кубернетами, дежоптом, докером, начинающими.

Как вы уже знаете, Kubernetes не является легкой технологией. Это мощная облачная технология, но это может быть трудоемким и болезненным для отладки или устранения проблем и узнать, как сделать в нескольких решениях.

Это по этой причине, что я создал много технических скиртотов о Куберане, которые вы можете увидеть в «Понимание Кубернанов в визуальном виде» Я создал также новый Серия видео которые смешают Sketchnote и Audio Content, и теперь моя новая идея — публиковать статью, ориентированную на одну проблему/одну потребность.

В этой первой статье мы будем сосредоточиться на одном нужно: Обычно, когда я подключаюсь к кластеру, у меня есть все права (Cluster-admin), так как я могу подключиться к кластеру Kubernetes и выполнять команды kubectl как пользователь (как serviceacount )?

Вы можете иметь эту потребность во многих ситуациях. Представьте, что у вас есть кластер Kubernetes (или конвейерные кластеры) с изоляцией на пространство имен (Например, проект по команде), а пользователи в ваших кластерах имеют права в зависимости от Клостерроль Отказ

Когда вы хотите добавить или редактировать права пользователя и проверьте поведение, вам нужно проверить как пользователь.

В этой статье наша потребность заключается в том, чтобы выполнить команды kubectl, в кластере Kubernetes, как пользователь, имеющих права, перечисленные в Клостерроль Отказ Пользователь должен только иметь права только для чтения для секретов в пространство имен Отказ

В этом случае у вас уже есть Роли и Кластерролы В вашем кластере, потому что вы хотите проверить их ^^, но на случай, если у вас нет уже Кластерроль И вы хотите проверить это RBAC (контроль доступа на основе ролей) Настройки, следующий шаг позволяет создавать Кластерроль :

  • 0. Создать Клостерроль Это гранты читают секретный доступ во всех пространства имен в кластере
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: secret-reader
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]

Здесь список шагов, которые позволят вам создать пространство имен Разверните ресурсы Kubernetes, которые позволяют добавлять некоторые права в этом пространстве имен, генерирует файл Kubeconfig и выполнять команды в кластере Kubernetes, как ServieSeacount (У кого есть права, которые вы хотите проверить).

  • 1. Создать пространство имен «test-ns»
$ kubectl create ns test-ns
  • 2. Создать ServieSeacount «My-Sa-test» в этом пространство имен
$ kubectl create serviceaccount my-sa-test -n test-ns
  • 3. Создать Прилечение который предоставляет секрет-ридер к My-Sa-Sa-Test
$ kubectl create rolebinding read-pods -n test-ns --clusterrole=secret-reader --serviceaccount=test-ns.my-sa-test
  • 4. Создайте файл Kubeconfig для созданного ServieSeacoucount. «My-Sa-test»
$ export SECRET_NAME_SA=`kubectl get sa my-sa-test -n test-ns -ojsonpath="{ .secrets[0].name }"`
$ export TOKEN_SA=`kubectl get secret $SECRET_NAME_SA -n test-ns -ojsonpath='{.data.token}' | base64 -d`
$ kubectl config view --raw --minify > kubeconfig.txt
$ kubectl config unset users --kubeconfig=kubeconfig.txt
$ kubectl config set-credentials ${SECRET_NAME_SA} --kubeconfig=kubeconfig.txt --token=${TOKEN_SA}
$ kubectl config set-context --current --kubeconfig=kubeconfig.txt --user=${SECRET_NAME_SA}
  • 5. Выполните команды kubectl в кластере как ServieSeacoucount.
$ kubectl --kubeconfig=kubeconfig.txt get secrets -n test-ns

Или Вы можете выполнить kubectl Команды напрямую с токеном ServiceAccount (Нет необходимости создавать другой файл Kubeconfig):

$ export NAMESPACE_SA=test-ns
$ export TEAM_SA=my-sa-test

$ export TOKEN=$(kubectl get $(kubectl get secret -o name -n ${NAMESPACE_SA} |grep  ${TEAM_SA} ) -o jsonpath='{.data.token}' -n ${NAMESPACE_SA} | base64 -d)

$ kubectl --token=${TOKEN} get ns

Прохладный! Теперь у меня могут быть только права, как мой пользователь, поэтому я могу имитировать поведения моих пользователей!:-)

Я надеюсь, что это новое серия статьи, с конкретными примерами и используемыми случаями помогут вам в ваших выгодных поездках.

Оригинал: «https://dev.to/stack-labs/debugging-kubernetes-execute-kubectl-commands-with-a-service-account-1k44»