惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
P
Palo Alto Networks Blog
Know Your Adversary
Know Your Adversary
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cisco Talos Blog
Cisco Talos Blog
L
Lohrmann on Cybersecurity
AWS News Blog
AWS News Blog
J
Java Code Geeks
博客园_首页
Scott Helme
Scott Helme
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
V
Visual Studio Blog
Cloudbric
Cloudbric
Jina AI
Jina AI
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
S
SegmentFault 最新的问题
The Last Watchdog
The Last Watchdog
SecWiki News
SecWiki News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
W
WeLiveSecurity
K
Kaspersky official blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hacker News: Ask HN
Hacker News: Ask HN
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
量子位
Google Online Security Blog
Google Online Security Blog
博客园 - Franky
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 三生石上(FineUI控件)
Recent Commits to openclaw:main
Recent Commits to openclaw:main

二丫讲梵

学习周刊-总第258期-2026年第15周 学习周刊-总第257期-2026年第14周 学习周刊-总第256期-2026年第13周 学习周刊-总第255期-2026年第12周 学习周刊-总第254期-2026年第11周 学习周刊-总第253期-2026年第10周 临时插播一条羊毛,免费领取450元大模型API代金券 学习周刊-总第252期-2026年第09周 学习周刊-总第251期-2026年第08周 学习周刊-总第250期-2026年第07周 学习周刊-总第249期-2026年第06周 诚邀评论,聊聊你所知欲知的我 学习周刊-总第248期-2026年第05周 我的QQ动态之2015年 我的QQ动态之2014年 我的QQ动态之2013年 我的QQ动态之2012年 我的QQ动态-2010-2011年 我的QQ动态-创栏小叙 学习周刊-总第247期-2026年第04周 Nexus社区版权益阉割--一文告诉你有哪些版本可以选择 学习周刊-总第246期-2026年第03周 学习周刊-总第245期-2026年第02周 学习周刊-总第244期-2026年第01周 学习周刊-总第243期-2025年第52周 学习周刊-总第242期-2025年第51周 开源项目ZenOps:带你领略禅意运维 学习周刊-总第241期-2025年第50周 用京东金融,享负债人生 学习周刊-总第240期-2025年第49周 学习周刊-总第239期-2025年第48周 整理我在静态服务透明代理上的极致求索之路,最后一个你绝想不到 学习周刊-总第238期-2025年第47周 我们输了,但收获颇多 太多了,太多了 学习周刊-总第237期-2025年第46周 学习周刊-总第236期-2025年第45周 学习周刊-总第235期-2025年第44周 二五年国庆二三事 学习周刊-总第234期-2025年第43周 学习周刊-总第233期-2025年第42周 学习周刊-总第232期-2025年第41周 学习周刊-总第231期-2025年第40周 学习周刊-总第230期-2025年第39周 西湖毅行 2025年开源世界逸闻三则 学习周刊-总第229期-2025年第38周 手抄《与妻书》 CNB开发与构建基于docker-cache缓存复用的配置实践心得 学习周刊-总第228期-2025年第37周 父亲善行录 学习周刊-总第227期-2025年第36周 带你认识我之看看我的高中同学录(其二) 学习周刊-总第226期-2025年第35周 带你认识我之看看我的高中同学录(其一) 认识神级MCP工具系列--用anyquery和数据库交互 学习周刊-总第225期-2025年第34周 学习周刊-总第224期-2025年第33周 学习周刊-总第223期-2025年第32周 学习周刊-总第222期-2025年第31周 学习周刊-总第221期-2025年第30周 CNB云原生开发环境届的瑞士军刀,详解qifei项目 vuepress-vdoing主题配置自建不蒜子统计 学习周刊-总第220期-2025年第29周 写在博客发表文章1000篇的节点 从claude cli的体验聊聊最大的敌人是我们自己的成见 学习周刊-总第219期-2025年第28周 学习周刊-总第218期-2025年第27周 学习周刊-总第217期-2025年第26周 理论正确,事实错误 学习周刊-总第216期-2025年第25周 学习周刊-总第215期-2025年第24周 学习周刊-总第214期-2025年第23周 学习周刊-总第213期-2025年第22周 学习周刊-总第212期-2025年第21周 从赵心童世锦赛夺冠聊聊我的斯诺克情缘 学习周刊-总第211期-2025年第20周 记录二五年五一之短暂回归家庭 学习周刊-总第210期-2025年第19周 学习周刊-总第209期-2025年第18周 学习周刊-总第208期-2025年第17周 Go开发实践之Gin框架将前端的dist目录embed到二进制 学习周刊-总第207期-2025年第16周 近期关于cobra库的一些实践心得总结 学习周刊-总第206期-2025年第15周 我的嗜好--嗑瓜子 记大宝参加幼儿园组织的清明烈士陵园扫墓活动 学习周刊-总第205期-2025年第14周 学习周刊-总第204期-2025年第13周 前端开发小笔记--在数组中给字段添加值与删除字段的操作 学习周刊-总第203期-2025年第12周 人生实苦,何以自渡 学习周刊-总第202期-2025年第11周 近期发现的一些优秀的工具提名(一) 学习周刊-总第201期-2025年第10周 学习周刊-总第200期-2025年第09周 记一次女友喝醉使我忍术破功 爱情风波--一次分手又复合的经历 学习周刊-总第199期-2025年第08周 整理我的信息源
AWS运维部署实践--配置跨账号通过kubectl管理EKS集群
二丫讲梵 · 2024-10-19 · via 二丫讲梵

# 前言

通常我们的eks集群都应该是集中管理的,在同一账号中,可直接通过集中的某台主机进行管理,但在跨账号场景中,则需要费一番周折,此处记录下配置的过程。

需求:想要在A账号主机X上,通过kubectl管理B账号下的EKS集群。

先概述下配置思路:在B账号中创建角色,并将角色共享A账号,然后A账号创建一个用户,通过该用户,来实现认证并管理集群的功能。

# 在B账号的操作

这里假设B账号EKS集群已经成功创建,并且在B账号的某台服务器上已经配置好了集群认证。

# 创建授权的角色

来到B账号IAM中,找到角色,点击创建角色:

image-20241017095743464

步骤1选择账号,步骤2填入A账号的ID。

点击下一步,是授予该角色具体的权限,一般授予其AmazonEKSClusterPolicyAmazonEKSWorkerNodePolicy的权限即可。

再往下给该角色做下命名,创建即可。

创建完成之后,会获得一个重要的信息,该角色的ARN,例如:arn:aws:iam::00000008:role/aws3-iam-aws1

# 更新集群认证

上一步创建了角色之后,现在需要将上一步的角色,添加到EKS集群的认证中。

现在登录到B账号中已经配置好集群认证的服务器,如果没有配置好,可通过如下命令更新kubeconfig:

$ aws eks update-kubeconfig --region ap-southeast-1 --name aws3-sgp-eks-cluster

1

然后编辑aws-authconfigmap

$ kubectl edit configmap aws-auth -n kube-system

将如下内容添加上去:
mapRoles: |
  - rolearn: arn:aws:iam::00000008:role/aws3-iam-aws1
    username: aws-a-account-user
    groups:
      - system:masters

1
2
3
4
5
6
7
8

保存并退出,保存成功之后,即表示这个IAM角色拥有了集群的管理员权限。

申明

原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。

# 在A账号操作

概述:在A账号的操作就是创建一个用户,关联上边的角色,然后生成秘钥,之后再在X服务器上配置aws cli认证,然后再update-kubeconfig即可。

  1. 创建策略

    在A账号找到IAM,然后点击策略,创建策略,并将如下权限关联给该策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "sts:AssumeRole",
                "Resource": "arn:aws:iam::00000008:role/aws3-iam-aws1"
            }
        ]
    }
    

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

  2. 创建用户

    然后点击用户,创建一个EKS用户(此用户可只开通编程访问),关联上上一步的策略。

  3. 生成秘钥

    然后给刚刚创建的用户,生成一个秘钥。

  4. 配置秘钥认证

    拿上秘钥,来到A账号的服务器X,执行如下命令配置访问秘钥:

    输入以下信息:

    • AWS Access Key ID: Your_Access_Key_ID
    • AWS Secret Access Key: Your_Secret_Access_Key
    • Default region name: YOUR_REGION(例如,ap-southeast-1
    • Default output format: json
  5. 配置aws配置文件支持角色假设

    编辑~/.aws/config文件,添加一个配置文件以允许用户假设账户A的角色。例如,添加以下内容:

    [profile eks-account-aws3]
    role_arn = arn:aws:iam::00000008:role/aws3-iam-aws1
    source_profile = default
    

    1
    2
    3

    这里,default是使用刚配置的访问密钥的默认配置文件,eks-account-a是您为账户A角色假设创建的新配置文件名称。

  6. 生成kubeconfig

    然后直接执行命令获取配置:

    $ aws eks update-kubeconfig --region ap-southeast-1 --name aws3-sgp-eks-cluster --profile eks-account-aws3
    

    1

    需要注意,此命令中,指定的--profile是上一步骤中对应的profile名字。

    生成之后,你查看一下kubeconfig文件,会发现,此文件内有一个内容如下:

        env:
          - name: AWS_PROFILE
            value: eks-account-aws3
    

    1
    2
    3

    因此,后续你所执行的bash里边,在~/.aws/config里边,必须要要包含第5步所配置的内容,否则此配置文件也无法正常工作。

  7. 验证

    此处除了确保上边的权限配置正确之外,还需要注意,要提前把AB两个账号的VPC进行打通。

# 补充

我看到还有一种更简便的在A账号的操作方案,未经验证,在此简单记录。

  1. 在A账号创建一个IAM角色,该角色关联的策略如下:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::ACCOUNT_B_ID:role/EC2Role"
          },
          "Action": "sts:AssumeRole",
          "Condition": {}
        }
      ]
    }
    

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

  2. 然后直接在A账号的服务器X上配置角色切换

    • 使用AWS CLI的aws sts assume-role命令获取临时凭证:

      aws sts assume-role --role-arn arn:aws:iam::ACCOUNT_A_ID:role/eks-cross-account-role --role-session-name EKSAccessSession
      

      1

    • 将返回的AccessKeyIdSecretAccessKeySessionToken配置为环境变量,或存储在~/.aws/credentials文件中。

    • 相当于当前bash已拥有了刚才角色关联的权限,那么接下来直接update-kubeconfig就可以拿到集群的认证信息了。

# 最后

如此就可以实现在一个账号的某台服务器,集中管理不同账号中的EKS集群了。之所以有这个需求,是在多个账号,但是发布系统集中在某台服务器的场景中。

但是需要注意的是,如果账号或者集群存在多个,那么你的配置文件可能不好兼容,所以建议最后执行kubectl部署的环境,封装到一个容器里边,然后借助jenkins的容器执行的方法进行部署。

如果你还有更好的方案,或者有什么其他方法,欢迎在评论区留言交流。