【问题标题】:Kubernetes Service Account Signing KeyKubernetes 服务帐户签名密钥
【发布时间】:2020-04-16 13:43:06
【问题描述】:

我正在寻找用于在我的集群中签署服务帐户令牌的私钥。有没有办法找到这个密钥的路径或以某种方式打印它?

Documentation 表示在启动期间使用什么标志来提供密钥,但没有关于当前正在使用的密钥的信息。

【问题讨论】:

    标签: kubernetes oauth-2.0 openid-connect amazon-eks


    【解决方案1】:

    您可以检查传递给 –service-account-private-key-file 参数的路径到 kube 控制器管理器组件。这是令牌控制器用来签署服务帐户的密钥。

    –service-account-private-key-file string
    Filename containing a PEM-encoded private RSA or ECDSA key used to sign service account tokens.
    

    在 kubeadm 安装的集群中,我可以通过在 kube-system 命名空间中描述 pod kube-controller-manager-kind-control-plane(不同集群中的 pod 名称可能不同)来检查路径

    kubectl describe pod kube-controller-manager-kind-control-plane -n kube-system
    Name:                 kube-controller-manager-kind-control-plane
    Namespace:            kube-system
    Priority:             2000000000
    Priority Class Name:  system-cluster-critical
    Node:                 kind-control-plane/172.17.0.2
    Start Time:           Tue, 14 Apr 2020 14:13:18 +0530
    Labels:               component=kube-controller-manager
                          tier=control-plane
    Annotations:          kubernetes.io/config.hash: 15e79e27a50d92dc481a5aaaad4399d8
                          kubernetes.io/config.mirror: 15e79e27a50d92dc481a5aaaad4399d8
                          kubernetes.io/config.seen: 2020-04-14T08:43:15.2951468Z
                          kubernetes.io/config.source: file
    Status:               Running
    IP:                   172.17.0.2
    IPs:
      IP:           172.17.0.2
    Controlled By:  Node/kind-control-plane
    Containers:
      kube-controller-manager:
        Container ID:  containerd://6423f4d70cf0af2be708315b1aa5d4cb038d73b00b63f3d759db60e75f1ebf56
        Image:         k8s.gcr.io/kube-controller-manager:v1.17.0
        Image ID:      sha256:7818d75a7d002a3c1bb6e9d8fe4416e75ee7df87b57585ab4f8ef01ccba1ddaa
        Port:          <none>
        Host Port:     <none>
        Command:
          kube-controller-manager
          --allocate-node-cidrs=true
          --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
          --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
          --bind-address=127.0.0.1
          --client-ca-file=/etc/kubernetes/pki/ca.crt
          --cluster-cidr=10.244.0.0/16
          --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
          --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
          --controllers=*,bootstrapsigner,tokencleaner
          --enable-hostpath-provisioner=true
          --kubeconfig=/etc/kubernetes/controller-manager.conf
          --leader-elect=true
          --node-cidr-mask-size=24
          --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
          --root-ca-file=/etc/kubernetes/pki/ca.crt
          --service-account-private-key-file=/etc/kubernetes/pki/sa.key
          --service-cluster-ip-range=10.96.0.0/12
          --use-service-account-credentials=true
    

    如上图所示,在 kubeadm 安装的集群中,密钥文件位于主节点 /etc/kubernetes/pki/sa.key 位置

    由于您在 EKS 托管集群上,因此您将无法访问主节点。

    【讨论】:

    • 如何检查传递给此“--service-account-private-key-file”参数的值是什么?这不是 kubectl 中的资源
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2014-09-07
    • 2021-08-31
    • 2016-06-26
    • 2018-09-24
    相关资源
    最近更新 更多