繁体   English   中英

大三角帆使用服务帐户对K8进行身份验证。 不带系统:匿名

[英]Spinnaker authenticate K8s with service account. Not with system:anonymous

我看到三角帆使用system:anonymous用户对K8s进行身份验证。 但是我想要一个特定的用户(我已经在K8s中创建了)来验证K8s。 我在kubeconfig下面使用了veeru用户

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: RETRACTED
    server: https://xx.xx.xx.220:8443
  name: xx-xx-xx-220:8443
contexts:
- context:
    cluster: xx-xx-xx-220:8443
    namespace: default
    user: veeru/xx-xx-xx-220:8443
  name: area-51/xx-xx-xx-220:8443/veeru
current-context: area-51/xx-xx-xx-220:8443/veeru
kind: Config
preferences: {}
users:
- name: veeru/xx-xx-xx-220:8443
  user:
    client-certificate-data: RETRACTED
    client-key-data: RETRACTED

而且我在config(〜/ .hal / config)中指定了(如此user ,如下所示

kubernetes:
      enabled: true
      accounts:
      - name: my-k8s-account
        requiredGroupMembership: []
        providerVersion: V1
        dockerRegistries:
        - accountName: my-docker-registry2
          namespaces: []
        configureImagePullSecrets: true
        namespaces: ["area-51"]
        user: veeru
        omitNamespaces: []
        kubeconfigFile: /home/ubuntu/.kube/config
        oauthScopes: []
        oAuthScopes: []
      primaryAccount: my-k8s-account

但三角帆仍在使用system:anonymous

2018-01-22 08:35:13.929 ERROR 4639 --- [pool-4-thread-1] c.n.s.c.o.DefaultOrchestrationProcessor  : com.netflix.spinnaker.clouddriver.kubernetes.v1.deploy.exception.KubernetesOperationException: Get Service openshifttest-dev in area-51 for account my-k8s-account failed: User "system:anonymous" cannot get services in the namespace "area-51": User "system:anonymous" cannot get services in project "area-51"

有什么方法可以指定大三角帆应使用system:anonymous用户以外的已配置用户system:anonymous

UPDATE-1

已关注: https : //blog.spinnaker.io/spinnaker-kubernetes-rbac-c40f1f73c172

kubectl describe secret spinnaker-service-account-token-9sl6q获得了secretkubectl describe secret spinnaker-service-account-token-9sl6q并在kubeconfig更新,如下所示

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: REDACTED
    server: https://xx.xx.xx.xx:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    namespace: webapp
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
- context:
    cluster: kubernetes
    user: spinnaker-service-account
  name: spinnaker-context
current-context: spinnaker-context
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
- name: spinnaker-service-account
  user:
    token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9....

比我跑sudo hal deploy

....
! ERROR Unable to communicate with your Kubernetes cluster: Failure
  executing: GET at: https://xx.xx.xx.xx:6443/api/v1/namespaces. Message:
  Forbidden! User spinnaker-service-account doesn't have permission. namespaces is
  forbidden: User "system:serviceaccount:default:spinnaker-service-account" cannot
  list namespaces at the cluster scope..
? Unable to authenticate with your Kubernetes cluster. Try using
  kubectl to verify your credentials.
....

我可以跑步

$ kubectl get namespace webapp
NAME      STATUS    AGE
webapp    Active    22m

我在~/.hal/config webapp命名空间和用户指定为spinnaker-service-account

我在禁用基本身份验证的情况下使用GKE 我的三角帆使用了我创建的专用K8s服务帐户。 在我的~/.kube/config我有每个K8s集群的令牌。

users:
- name: gke_operation-covfefe-1_asia-east1_testing-asia-east1
  user:
    token: token1
- name: gke_operation-covfefe-1_europe-west1_testing-europe-west1
  user:
    token: token2
- name: gke_operation-covfefe-1_us-central1_testing-us-central1
  user:
    token: token3

我通过运行获得了这些令牌

kubectl get secret spinnaker-service-account -o json \
 | jq -r .data.token \
 | base64 -d

然后手动更新~/.kube/config文件。

确保您的服务帐户具有所需的RBAC权限。 在这里查看博客文章

更新:

另外,还要确保为服务帐户提供了必需的RBAC权限。 请参阅上方博客文章的“角色”部分或此处指南 当您使用kubectl测试RBAC权限时, kubectl确保您使用的是与Spinnaker使用的服务帐户相同的服务帐户。

更新2

如果要让大三角帆作用于所有名称空间,请在RBAC中使用ClusterRole和ClusterRoleBinding。 该博客文章仅使用Role和RoleBinding,它们将操作限制为特定的名称空间。 有关群集*方式,请参阅本指南 注意PR来修正打字错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM