AWS CodePipeline 并部署到 EKS

2024-04-03

正在开发 AWS CodePipeline,用于构建容器并将其部署到 EKS 集群。

AWS CodePipeline 似乎不支持“仅 ECS”对 EKS 的部署操作。我尝试探索其他选项,例如使用 lambda 函数,我找到了以下在 lambda 中运行 kubectl 命令的示例

https://github.com/tmuskal/lambda-kubectl https://github.com/tmuskal/lambda-kubectl

尽管如此,EKS 使用 aws-iam-authenticator 来为 kubeconfig 生成令牌。但不确定它如何适合 lambda 上下文。

任何有关主题的建议将不胜感激。


AWS 不支持 EKS 的部署操作。但是,可以通过使用代码管道和代码构建来实现,使EKS集群能够持续构建和部署。需要设置一些 IAM 角色和权限,以允许 codebuild 运行 kubectl 并部署在 eks 集群上。

  1. 需要创建一个角色(kubernetes_deployment),该角色有权允许 EKS 代表您管理集群。

    • 附加到 kubernetes_deployment 角色的权限

      AmazonEKSClusterPolicy

      AmazonEKSServicePolicy

      内联策略如下

      {
        "Version": "2012-10-17",
        "Statement": [
         {
           "Sid": "VisualEditor0",
           "Effect": "Allow",
           "Action": "eks:DescribeCluster",
           "Resource": "*"
         }
       ]
      }
      
  2. 在您的 aws 参考中创建代码构建请参阅此构建规范 https://github.com/rnzsgh/eks-workshop-sample-api-service-go

    • 确保 codebuild 中使用的服务角色应具有 sts:assume kubernetes_deployment 角色的权限,该角色有权管理 eks 集群

         {
            "Version": "2012-10-17",
            "Statement": [
             {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Resource": "arn:aws:iam:: 
                 <accountno>:role/kubernetes_deployment"
               }
             ]
            }
      
  3. 更新 kubernetes_deployment 角色的信任关系以允许 codebuild 服务角色使用

     {
       "Version": "2012-10-17",
       "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
              "AWS": "arn:aws:iam::<account>:role/service-role/codebuild-service-role",
               "Service": "eks.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
        }
     ]
    }
    
  4. 将 kubernetes_deployment 角色设置为 eks 集群中的授权

    - rolearn: arn:aws:iam::<account>:role/kubernetes_deployment
      username: kubernetes_deployment
      groups:
       - system:masters
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS CodePipeline 并部署到 EKS 的相关文章

随机推荐

  • 将触发器监视器作为 MQ 服务对象 - 如何获取状态

    我创建了一个 MQ 服务对象来运行我的触发器监视器 DEFINE SERVICE TriggerMonitor CONTROL QMGR STARTCMD C Program Files x86 IBM WebSphere MQ bin r
  • 如何在文件夹名称带有空格的批处理文件中写入完整路径?

    我正在批处理文件中编写以下命令 REGSVR32 E Documents and Settings All Users Application Data xyz dll 运行此命令后 我收到以下错误 LodLibrary e Documen
  • 如何在 Spring-data JPA 中映射名称中带有下划线“_”的类属性

    使用 Spring Data 的 JPA 是否存在名称中带有下划线 的属性的问题 这是我的扩展界面JpaRepository public interface I My Class extends JpaRepository
  • 如何使用 Laravel Tinker 编写新行

    如何使用 Laravel Tinker 换行 所以而不是 users User all foreach users as user echo user gt email 我希望能够写成如下 users User all foreach us
  • QGLWidget 和快速离屏渲染

    是否可以在屏幕外完全渲染QGLWidget使用 Qt 无需将场景重新绘制到屏幕 从而完全避免缓冲区在监视器上翻转 我需要保存帧缓冲区上生成的每一帧 但是 由于序列由 4000 帧组成 并且屏幕上的时间间隔为15ms我花费4000 15ms
  • Django唯一随机作为默认值

    在将某个值指定为默认值时 有什么方法可以检查模型中是否存在该值 如果分配值存在 不唯一 则生成另一个值 阅读评论 def unique rand return Generate a random string with 8 characte
  • 我有两个类型定义,如何确定一个类型是否是另一个的基类型?

    我在 ActionScript 3 中有两个类型定义 Class 类型的引用 我需要确定其中一个是否是另一个的基类型 类或接口 我本来希望像下面这样的东西会起作用 但遗憾的是它没有 var isBaseClass Boolean Mouse
  • 如何从 Golang 访问 C 指针数组

    我正在使用 FFmpeg 为 Windows 平台编写一个应用程序 它是 golang 包装器 goav 但我无法理解如何使用 C 指针来访问数组 我试图获取存储在 AVFormatContext 类中的流以在 go 中使用 并最终将帧添加
  • ToString("0") 与 ToString(CultureInfo.InvariantCulture)

    我想确保我的应用程序中的某些数字在打印时没有任何分隔符 分组等 无论当前环境如何 似乎以下两种方法产生相同的结果 可能还有更多 123456789 ToString 0 123456789 ToString CultureInfo Inva
  • 为什么 Rails 不引发 I18n::MissingInterpolationArgument 异常?

    我创建了一个虚拟 Rails 4 1 5 应用程序来显示 I18ntranslate当未提供要插值的变量时 方法不会引发 I18n MissingInterpolationArgument 仅当提供错误的内容时才会引发该异常 这是预期的行为
  • 从源代码构建 Docker 失败

    从 dotcloud docker git 克隆之后 cd docker sudo make VERBOSE 1 Fetching https net http cookiejar go get 1 https fetch failed u
  • 撤消已推送的合并

    好吧 我弄得有点乱了 显然 在我家里的机器上 开发分支没有更新 我做出了承诺并推动了 结果是实际的 origin develop 分支已合并到我的本地开发分支中 由于某种原因 它被视为不同的分支 一方面 我真的不明白这是怎么发生的 其次 我
  • 通用二叉树节点析构函数问题

    我一直在做一项作业 现在我被有问题的析构函数困住了 我必须创建一个包含所有常用成员函数和一些特殊运算符的通用二叉树 还有一个限制 一切都必须迭代地工作 所以这次没有令人讨厌的递归黑客 BinTreeNode 类的析构函数显然有一些非常错误的
  • Laravel 中 detach() 方法也可以应用于一对多关系吗?

    在 Laravel 文档中 我发现 detach 方法可以分离多对多关系中的所有对象 detach 方法也可以应用于 Laravel 中的一对多关系吗 如果不是 在这种情况下如何分离所有 n 个对象 在多对多关系中 detach 方法仅删除
  • 更改通过文字初始化创建的对象的原型

    假设我只想使用 不是构造函数 我有一个这样的对象 var o name Jack 如果我想创建另一个对象 其原型是o我使用这个语法 var u Object create o console log u name prints Jack u
  • 传递具有可变大小的二维数组

    我正在尝试将二维数组从一个函数传递到另一个函数 然而 数组的大小不是恒定的 尺寸由用户决定 我曾尝试对此进行研究 但运气不佳 大多数代码和解释都是针对数组的恒定大小 在我的函数中A我声明该变量 然后对其进行一些操作 然后必须将其传递给 Fu
  • 如何使用 shell 始终获取下载 tomcat 服务器的最新链接

    我写了一个shell脚本来下载并安装tomcat服务器v 8 5 31 wget http www us apache org dist tomcat tomcat 8 v8 5 31 bin apache tomcat 8 5 31 ta
  • 如何从 f:selectItems 获取标签和值

    我正在开发一个 JSF 页面 该页面有一个基于List
  • 在 hibernate 中使用 where 子句选择查询

    我有班级登录 其中有userId username and password 对于要登录的用户 我正在检查username and password并得到userId If userId不为零则它将引导至主页 我正在尝试在休眠状态下执行此操
  • AWS CodePipeline 并部署到 EKS

    正在开发 AWS CodePipeline 用于构建容器并将其部署到 EKS 集群 AWS CodePipeline 似乎不支持 仅 ECS 对 EKS 的部署操作 我尝试探索其他选项 例如使用 lambda 函数 我找到了以下在 lamb