首页 > 解决方案 > 请输入用户名 - ServiceAccount 部署

问题描述

当我尝试使用 ServiceAccount 进行部署时,我得到Please enter Username了,即使我已经设置了 ClusterRole 绑定 - 你知道为什么吗?

kubectl:

kubectl apply -f deployment.yaml

角色和绑定:

kubectl create clusterrole tutorial-role \
               --verb=get,list,watch,create,update,patch,delete \
               --resource=deployments


kubectl create clusterrolebinding tutorial-binding \
             --clusterrole=tutorial-role \
             --serviceaccount=default:tutorial-service

创建配置用户:

TOKEN=$(kubectl describe secrets "$(kubectl describe serviceaccount tutorial-service | grep -i Tokens | awk '{print $2}')" | grep token: | awk '{print $2}')
kubectl config set-credentials tutorialuser --token=$TOKEN
kubectl config set-context sausercontext --cluster=<my-cluster> --user=tutorialuser
kubectl config use-context sausercontext --namespace=default

部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: leeroy-web
  labels:
    app: leeroy-web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: leeroy-web
  template:
    metadata:
      labels:
        app: leeroy-web
    spec:
      containers:
        - name: leeroy-web
          image: gcr.io/appsyouwear/leeroy-web
          ports:
            - containerPort: 8080

信息:

kubernetes % kubectl -v=8 apply -f deployment.yaml   
I0111 13:57:05.950317   63261 loader.go:359] Config loaded from file /Users/username/.kube/config
Please enter Username:

标签: kubernetes

解决方案


你的 Kubeconfig 文件是 munged。要么你在 contexts 部分没有用户,要么你在 users 部分没有用户。kubeconfig 的 contexts 和 users 部分应如下所示。

contexts:
- context:
    cluster: kubernetes
    user: tutorialuser
  name: sausercontext


users:
- name: tutorialuser
  user: 
    token: <removed>

推荐阅读