Gardener项目中Shoot集群的ServiceAccount配置详解

Gardener项目中Shoot集群的ServiceAccount配置详解

gardener Homogeneous Kubernetes clusters at scale on any infrastructure using hosted control planes. gardener 项目地址: https://gitcode.com/gh_mirrors/ga/gardener

概述

在Kubernetes集群中,ServiceAccount是Pod与API Server进行身份验证的重要机制。作为Kubernetes集群管理工具,Gardener提供了灵活的配置选项来管理Shoot集群中的ServiceAccount行为。本文将深入解析如何在Gardener项目中配置Shoot集群的ServiceAccount相关参数。

基础配置

在Shoot资源定义中,可以通过以下YAML结构配置ServiceAccount相关参数:

apiVersion: core.gardener.cloud/v1beta1
kind: Shoot
spec:
  kubernetes:
    kubeAPIServer:
      serviceAccountConfig:
        issuer: foo
        acceptedIssuers:
        - foo1
        - foo2
        extendTokenExpiration: true
        maxTokenExpiration: 45d

发行者(Issuer)配置

基本概念

ServiceAccount令牌的发行者(Issuer)是令牌中iss声明的值,用于标识令牌的来源。在Kubernetes生态系统中,这通常是一个符合OpenID Connect规范的URL。

配置选项

  1. issuer:设置当前使用的令牌发行者
  2. acceptedIssuers:定义可接受的发行者列表,用于验证令牌

重要注意事项

  • 默认情况下,Gardener使用集群内部域名作为发行者(如https://api.foo.bar.example.com)
  • 如果自定义了issuer,默认发行者仍会自动包含在acceptedIssuers
  • 变更发行者时需谨慎处理,避免现有令牌失效

发行者变更最佳实践

当需要变更发行者时,建议按照以下步骤操作:

  1. 将旧发行者添加到acceptedIssuers列表
  2. 更新issuer为新值
  3. 确保所有工作负载使用短期有效的投影令牌
  4. 滚动更新所有Pod
  5. 重建所有ServiceAccount令牌Secret
  6. 等待至少12小时确保控制平面组件获取新令牌
  7. 确认所有令牌都已更新后,可从acceptedIssuers中移除旧发行者

令牌有效期配置

extendTokenExpiration参数

此参数对应kube-apiserver的--service-account-extend-token-expiration标志,默认启用。主要作用是在从传统令牌向绑定服务账户令牌过渡期间,将令牌有效期延长至最多1年,确保平稳过渡。

maxTokenExpiration参数

此参数对应kube-apiserver的--service-account-max-token-expiration标志,定义了服务账户令牌的最大有效期。

重要限制

  • 值必须在[30d,90d]范围内
  • 低于30天可能影响集群SLO
  • 高于90天违反安全最佳实践

实际应用

  • 此值为上限值,工作负载仍可使用更短的有效期
  • 可在PodSpec中通过expirationSeconds为单个工作负载设置更短的有效期

托管服务账户发行者

Gardener提供了一种集中管理服务账户发行者的方案,通过Gardener Discovery Server实现。

启用条件

  1. Gardener管理员需部署并配置Gardener Discovery Server
  2. 通常通过gardener-operator完成部署

启用方法

通过为Shoot集群添加注解启用此功能:

authentication.gardener.cloud/issuer: managed

重要说明

  • 此功能一旦启用无法禁用
  • 添加注解后需等待维护窗口或手动触发协调
  • .spec.kubernetes.kubeAPIServer.serviceAccountConfig.issuer字段互斥

获取托管发行者信息

协调完成后,可通过以下命令查询托管发行者URL:

kubectl -n my-project get shoot my-shoot -o jsonpath='{.status.advertisedAddresses[?(@.name=="service-account-issuer")].url}'

迁移注意事项

从自定义发行者迁移到托管发行者时,需遵循与发行者变更相同的最佳实践,确保平稳过渡。

总结

Gardener为Shoot集群的ServiceAccount管理提供了全面的配置选项,包括发行者管理、令牌有效期控制以及托管发行者方案。合理配置这些参数可以平衡安全性与可用性,确保集群稳定运行。在实际操作中,特别是涉及发行者变更时,务必遵循推荐的最佳实践,避免对运行中的工作负载造成影响。

gardener Homogeneous Kubernetes clusters at scale on any infrastructure using hosted control planes. gardener 项目地址: https://gitcode.com/gh_mirrors/ga/gardener

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侯宜伶Ernestine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值