如何使用 Kubernetes 版本 1.24 为服务帐户创建密钥

问题描述 投票:0回答:4

我使用的是 Kubernetes 版本 1.24,我已手动为我的服务帐户创建了一个密钥,但是当我运行

kubectl get serviceaccounts
时,它显示我没有该服务帐户的任何密钥?

kubernetes kubernetes-ingress kubectl
4个回答
6
投票

如果您使用的是K8s版本1.24

serviceaccount不会自动创建secret

您必须手动创建它。

kubectl create sa <serviceaccount-name>

示例

apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: token-secret
  annotations:
    kubernetes.io/service-account.name: "<SA name>"

如果您只想创建 代币,您可以使用:

kubectl create token <Name>

了解更多相关信息:https://medium.com/@harsh.manvar111/k8s-v1-24-is-unable-to-create-a-serviceaccount-secret-798f8454e6e7


3
投票

我必须进行一些搜索才能将所有内容放在一起:https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/

主要只是创建一个秘密资源文件

secret.yaml
.

apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: <name of the secret>
  annotations:
    kubernetes.io/service-account.name: "<name of the serviceaccount>"
kubectl apply -f secret.yaml

并将密钥添加到服务帐户。

# if you have already a serviceaccount you need only the edit line
kubectl create serviceaccount <name of the serviceaccount>
kubectl edit serviceaccount <name of the serviceaccount>

然后只需添加创建的秘密(最后两行):

apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: "2023-04-19T06:31:47Z"
  name: <name of the serviceaccount>
  namespace: default
  resourceVersion: "312345558"
  uid: 92f6ac28-cab4-41d2-b861-6e998a7cb644
secrets:
- name: <name of the manual created secret>

0
投票

手动创建

secret
时,需要手动添加到
ServiceAccount
。您可以使用
kubectl edit
来实现此目的。


0
投票
#!/bin/bash

SA_NAME="${1}"

kubectl create sa "$SA_NAME"

# Generate a random string for the token name
TOKEN_NAME=$(openssl rand -hex 5)

kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: "${SA_NAME}-token-${TOKEN_NAME}"
  annotations:
    kubernetes.io/service-account.name: "$SA_NAME"
type: kubernetes.io/service-account-token
EOF
./create_sa.sh jenkins

它将创建一个名为“jenkins”的服务帐户并为该服务帐户生成一个令牌

© www.soinside.com 2019 - 2024. All rights reserved.