Ответ 1
На момент написания статьи (PRE k8s 1.6) улучшенная поддержка пользовательских объектов все еще находится в стадии разработки, а самые простые сейчас - serviceaccounts
- с некоторыми опциями для специализированных политик для контроля доступа. (см. ниже)
ПРИМЕЧАНИЕ 1.6 было выпущено с использованием управления доступом на основе ролей по умолчанию - этот пост не обновляется этой информацией
EDIT: отличный гид от Bitnami на Настройка пользователя с помощью RBAC!
Шаги по включению доступа к учетной записи службы (по умолчанию без правил RBAC или ABAC, эти учетные записи имеют полные права администратора!):
EDIT: Вот bash script для автоматизации создания учетной записи службы - см. ниже шаги
-
Создайте учетную запись пользователя
Alice
kubectl create sa alice
-
Получить связанный секрет
secret=$(kubectl get sa alice -o json | jq -r .secrets[].name)
-
Получите
ca.crt
из тайны (используя OSXbase64
с флагом-D
для декодирования)kubectl get secret $secret -o json | jq -r '.data["ca.crt"]' | base64 -D > ca.crt
-
Получить токен учетной записи службы из секретного
user_token=$(kubectl get secret $secret -o json | jq -r '.data["token"]' | base64 -D)
-
Получить информацию из вашей конфигурации kubectl (текущий-контекст, сервер..)
# get current context c=`kubectl config current-context` # get cluster name of context name=`kubectl config get-contexts $c | awk '{print $3}' | tail -n 1` # get endpoint of current context endpoint=`kubectl config view -o jsonpath="{.clusters[?(@.name == \"$name\")].cluster.server}"`
-
На новой машине выполните следующие шаги (с учетом полученной информации
ca.cert
и$endpoint
:-
Установите
kubectl
brew install kubectl
-
Установить кластер (запустить в каталоге, где хранится
ca.crt
)kubectl config set-cluster cluster-staging \ --embed-certs=true \ --server=$endpoint \ --certificate-authority=./ca.crt
-
Установить учетные данные пользователя
kubectl config set-credentials alice-staging --token=$user_token
-
Определите комбинацию пользователя alice с промежуточным кластером
kubectl config set-context alice-staging \ --cluster=cluster-staging \ --user=alice-staging \ --namespace=alice
-
Переключить текущий контекст в
alice-staging
для пользователяkubectl config use-context alice-staging
-
Чтобы управлять доступом пользователей с помощью политик (с использованием ABAC), вам необходимо создать файл policy
:
{
"apiVersion": "abac.authorization.kubernetes.io/v1beta1",
"kind": "Policy",
"spec": {
"user": "system:serviceaccount:default:alice",
"namespace": "default",
"resource": "*",
"readonly": true
}
}
Предоставьте это policy.json
для каждого мастера node и добавьте флаги --authorization-mode=ABAC --authorization-policy-file=/path/to/policy.json
к серверам API
Это позволит Алисе (через ее учетную запись службы) читать только права на все ресурсы только в пространстве имен по умолчанию.
Лучшим решением является реализация coreos/dex в качестве поставщика Auth'n
для Kubernetes (это может интегрироваться с вашей организацией GitHub) и использовать RBAC.
RBAC все еще находятся в Alpha для k8s 1.5, но запланированы для Beta в k8s 1.6
1.6 План выпуска на момент написания:
March 14th 2017 (Tuesday) Lift code freeze and v1.6.0-rc.1
March 22nd 2017 (Wednesday) - v1.6.0