十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

kOps kops get keypairs 命令完全指南:查询与审计集群密钥对

kOps kops get keypairs 命令完全指南:查询与审计集群密钥对 云原生集群管理运维IaC【免费下载链接】kopsKubernetes Operations (kOps) - Production Grade k8s Installation, Upgrades and Management项目地址https://gitcode.com/gh_mirrors/kop/kops点击查看免费下载kops get keypairs是 Kubernetes OperationskOpsCLI 中用于查询集群密钥对keypair与密钥集keyset的核心命令它面向集群 CA 证书轮换、密钥信任审计与排障场景帮助运维人员快速定位主密钥、信任状态与证书有效期。读完本文你将掌握该命令的完整用法、输出格式差异、底层实现原理并能将其与kops create/promote/trust/distrust keypair等命令串联成一套完整的证书轮换审计工作流。命令概述kops get keypairs用于获取集群中一个或多个密钥对的信息。这里的密钥对是 kOps 对 X.509 证书与其对应私钥的封装在 pkg/apis/kops 的 Keyset API 中密钥对按用途被分组为命名密钥集keyset例如kubernetes-ca密钥集存放集群的 Kubernetes 通用 CA。命令的基本语法为kops get keypairs [KEYSET]... [flags][KEYSET]...为可选参数可指定一个或多个密钥集名称进行过滤不指定时列出集群中全部密钥集。该命令支持自动补全shell completion在交互式 shell 中输入时会基于集群中实际存在的密钥集名称给出候选见 cmd/kops/get_keypairs.go 与 completeKeyset 的实现。常见用法示例原文档给出了两个典型示例分别对应查看默认信任状态与包含已不信任密钥对两种查询视角# 列出集群 CA 密钥对。 kops get keypairs kubernetes-ca # 列出 service-account 密钥对包括已不信任distrusted的。 kops get keypairs service-account --distrusted这两个示例对应源码中的getKeypairExample模板定义于 cmd/kops/get_keypairs.go并由make gen-cli-docs自动生成到 docs/cli/kops_get_keypairs.md。值得补充的常见变体# 列出集群全部密钥集不指定名称 kops get keypairs # 指定多个密钥集 kops get keypairs kubernetes-ca service-account # 以 YAML 或 JSON 输出便于脚本化审计 kops get keypairs -o yaml kops get keypairs kubernetes-ca -o json选项Options命令专属选项选项说明--distrusted包含已不信任distrusted的密钥对。默认情况下被标记为不信任的密钥对不会出现在结果中。-h, --help显示命令帮助。--distrusted标志由cmd.Flags().BoolVar(options.Distrusted, distrusted, ...)注册见 cmd/kops/get_keypairs.go。在底层列表逻辑中过滤条件为包含不信任项或该项未被标记不信任且持有证书if includeDistrusted || (item.DistrustTimestamp nil item.Certificate ! nil) {cmd/kops/get_keypairs.go其中DistrustTimestamp定义在 upup/pkg/fi/ca.go 的KeysetItem中当某密钥对被标记为不信任时该字段会被写入 RFC 3339 格式的时间戳若未设置则密钥对处于信任状态。继承自父命令的选项kops get keypairs作为 kops get 的子命令继承了以下全局选项选项说明--config stringYAML 配置文件路径默认$HOME/.kops.yaml。--name string集群名称覆盖KOPS_CLUSTER_NAME环境变量。若未提供集群名命令会直接报错--name is required见 cmd/kops/get_keypairs.go。-o, --output string输出格式可选table、yaml、json默认table。--state string状态存储位置kops config 文件覆盖KOPS_STATE_STORE环境变量。-v, --v Level日志详细程度级别。--alsologtostderrthreshold severity当日志级别达到该阈值时同时输出到 stderr在-alsologtostderrtrue时生效-logtostderrtrue时无效。--legacy_stderr_threshold_behavior若为 truelogtostderrtrue时忽略stderrthreshold保持旧行为。-o/--output标志由父命令kops get通过PersistentFlags()注册见 cmd/kops/get.go并支持table、json、yaml三种取值常量定义见 cmd/kops/get.go。输出字段详解table 格式默认的table输出由 cmd/kops/get_keypairs.go 中的列定义渲染。列及含义如下列名含义NAME密钥集名称keyset 名如kubernetes-ca。ID密钥对在密钥集中的标识符格式为以1为起点递增的十进制数字见 upup/pkg/fi/ca.go 中的KeysetItemIdOlder排序逻辑。ISSUED证书生效日期NotBefore本地时区、格式2006-01-02。EXPIRES证书过期日期NotAfter本地时区、格式2006-01-02。DISTRUSTED仅在添加--distrusted标志时显示的列若该密钥对已不信任则显示不信任日期否则为空。PRIMARY若该密钥对为密钥集的主密钥对primary标记为*。HASPRIVATE若该密钥对持有私钥标记为*。注意列顺序是动态的——只有传入--distrusted时DISTRUSTED列才会被追加到ISSUED、EXPIRES与PRIMARY之间见 cmd/kops/get_keypairs.go。一个典型的输出示意NAME ID ISSUED EXPIRES PRIMARY HASPRIVATE kubernetes-ca 1 2026-01-01 2036-01-01 * * kubernetes-ca 2 2036-01-02 2046-01-02 service-account 1 2026-01-01 2036-01-01 * *yaml / json 格式使用-o yaml或-o json时输出的是keypairItem结构体序列化后的完整数据结构定义见 cmd/kops/get_keypairs.go。每个条目包含以下字段字段类型说明namestring密钥集名称。idstring密钥对 ID。distrustTimestamptime不信任时间戳仅已不信任的密钥对存在。isPrimarybool是否为密钥集主密钥对。subjectstring证书主体Subject。issuerstring证书签发者Issuer。alternateNames[]string证书的备用名称包含 DNS 名称、Email 地址与 IP 地址按字典序排序见 cmd/kops/get_keypairs.go。isCAbool该证书是否为 CA 证书。notBefore/notAftertime证书有效期起止UTC。keyLengthintRSA 公钥的密钥长度比特数仅对 RSA 密钥有效见 cmd/kops/get_keypairs.go。hasPrivateKeybool是否持有私钥。源码视角命令的完整调用链从源码结构看kops get keypairs的执行链路如下参数校验cobra 的Args回调校验集群名若为空则返回--name is requiredcmd/kops/get_keypairs.go。获取 clientset 与集群对象RunGetKeypairs通过f.KopsClient()获取客户端再按集群名取得cluster对象cmd/kops/get_keypairs.go。打开密钥库通过clientset.KeyStore(cluster)获得fi.CAStore实例cmd/kops/get_keypairs.go。CAStore接口的ListKeysets()负责返回全部密钥集接口定义见 upup/pkg/fi/ca.go。过滤与组装listKeypairs遍历所有密钥集按名称参数过滤再按--distrusted标志过滤每个KeysetItem最终组装为keypairItem列表cmd/kops/get_keypairs.go。渲染输出按-o取值分别走 tabletables.Table渲染、YAMLyaml.Marshal、JSONjson.Marshal三个分支若结果为空则返回no keypairs found错误cmd/kops/get_keypairs.go。关于主密钥对primary的判定每个密钥集恰好有一个 primary 密钥对其私钥被实际使用其余密钥对要么受信任证书被纳入相关信任库要么已被不信任见 docs/operations/rotate-secrets.md 对密钥集模型的说明以及Keyset.Primary字段定义于 upup/pkg/fi/ca.go。listKeypairs中通过item.Id keyset.Primary.Id判断主密钥对并设置IsPrimarycmd/kops/get_keypairs.go。实战场景与密钥轮换工作流配合kops get keypairs最常见的实战场景是证书轮换与密钥审计与kops create keypair、kops promote keypair、kops distrust keypair、kops trust keypair形成完整闭环。kOps 官方的密钥轮换流程详见 docs/operations/rotate-secrets.md大致如下创建并暂存新密钥对kops create keypair all为所有可轮换的密钥集创建新密钥对。获取新密钥对 ID 并标记不信任使用kops get keypairs获取新创建密钥对的 ID再通过kops distrust keypair keyset id临时将其标记为不信任确保旧密钥在过渡期仍被信任。提升新密钥对为主密钥kops promote keypair all将新密钥对提升为 primary。回滚如需要若节点尚未拿到新的certificate-authority-data导致不信任新 CA可先kops get keypairs获取旧主密钥对 ID再kops promote keypair按密钥集与 ID 提升回去。不信任旧密钥对kops distrust keypair all移除对旧密钥对的信任。审计与恢复使用kops get keypairs --distrusted获取此前被标记不信任的密钥对通过不信任日期识别如需恢复信任则执行kops trust keypair keyset id。在上述流程的每一步查询都依赖kops get keypairs它既用于获取新建密钥对的 ID步骤 2也用于核对主密钥与信任状态步骤 3-6。相关命令的文档可参见 docs/cli/kops_create_keypair.md、docs/cli/kops_promote_keypair.md、docs/cli/kops_distrust_keypair.md 与 docs/cli/kops_trust_keypair.md。常见问题与提示不指定--name会报错命令的Args回调要求必须能解析出集群名来自--name或KOPS_CLUSTER_NAME环境变量否则直接返回--name is required。若使用--state指向特定状态存储需同时确保集群名匹配。默认不显示已不信任的密钥对默认过滤条件要求DistrustTimestamp nil且持有证书若需审计历史上被轮换掉的密钥对必须显式加--distrusted。输出为空时报错而非空表当没有符合条件的密钥对时命令返回no keypairs found错误cmd/kops/get_keypairs.go脚本化使用时需注意处理该退出状态。table 输出不含证书详情如需 Subject、Issuer、备用名称、密钥长度等证书元数据请使用-o yaml或-o json。结合kops get secrets使用在旧版本轮换流程中曾通过kops get secrets | grep ^Keypair提取密钥对名称后再批量删除见 docs/operations/rotate-secrets.md新版本请优先使用kops get keypairs进行查询与审计。小结kops get keypairs是 kOps 密钥管理命令族中承上启下的查询入口它通过CAStore.ListKeysets()读取状态存储中的密钥集以table/yaml/json三种格式输出密钥对名称、ID、有效期、主密钥标记、私钥持有情况及不信任状态。结合--distrusted标志与-o输出格式运维人员可以在证书轮换、过期审计与信任恢复等场景中快速获取准确信息是保障生产集群 PKI 安全的重要基础工具。相关命令源码位于 cmd/kops/get_keypairs.go密钥集与密钥对的数据模型可进一步阅读 upup/pkg/fi/ca.go 与 pkg/apis/kops 中的 Keyset API 定义。赞分享云原生集群管理运维IaC【免费下载链接】kopsKubernetes Operations (kOps) - Production Grade k8s Installation, Upgrades and Management项目地址https://gitcode.com/gh_mirrors/kop/kops点击查看免费下载相关推荐CVAT 完整使用指南Docker 部署、AI 辅助标注与数据集质量控制全流程CVAT 完整使用指南Docker 部署、AI 辅助标注与数据集质量控制全流程 CVATComputer Vision Annotation Tool是一云原生集群管理运维IaCElasticsearch Ruby 安全配置API Key 认证与权限控制Elasticsearch Ruby 安全配置API Key 认证与权限控制 Elasticsearch Ruby 客户端是连接 Ruby 应用与 Elast云原生集群管理运维IaCkOps 资源查询指南kops get 命令全面解析与实战kOps 资源查询指南 kops get 命令全面解析与实战 本指南深入剖析 Kubernetes OperationskOps中的 kops get 命云原生集群管理运维IaC上一篇解决LazyVim中blink.cmp插件导致的文件检测失效问题完整修复指南下一篇彻底解决ExplorerPatcher杀毒软件误报问题的5个实用方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表