@ cat- factory/ eks (中文(简体) )
预选AWS 埃克萨斯 cat-factory 的后端:跑步后端(每个运行的代理舱)和一个 ephemeral-Environment后端(per-PR取名空间),均位于亚马逊EKS集群上.
为什么这个包裹很薄
EKS 集群的 API 服务器 实值 一个标准的 Kubernetes API 服务器,所以这个软件包 重复使用
整个本地的Kubernetes运输/供应商 从 @cat-factory/integrations
(单位:千美元)KubernetesRunnerTransport, (中文(简体) ), KubernetesEnvironmentProvider, (中文(简体) ), KubernetesApiClient逐字记录.
唯一的EKS特有作品是 认证: EKS 不使用静态服务账户
无记名代号; 它期望一个寿命短的 IAM 代号( 由 SigV4 指定的 STS) GetCallerIdentity
URL, 前缀 k8s-aws-v1.,准确的符号 aws eks get-token 生产)。 那个标志是
在这里用WebCrypto(eks-auth.logic.ts),所以包裹携带 无运行时间 AWS SDK
依赖性 并且运行时间中立。 它通过Aync符号接缝注射
KubernetesApiClient 曝光,因此没有运输逻辑重复.
扶持它
后门是 没有 在默认的登记簿中(保持AWS无限制)。 外观选择
登记他们 参考文献 从它的构成根( 节点/ 局部外观已经做了)
这个在 backend/runtimes/node/src/container.ts:
import { eksRunnerBackend, eksEnvironmentBackend } from '@cat-factory/eks'
registries.runnerBackendRegistry.register(eksRunnerBackend)
registries.environmentBackendRegistry.register(eksEnvironmentBackend)
工作空间然后连接一个 eks 运行/环境后端带有一个 EksRunnerConfig 编号 :
EksProvisionConfig (Kubernetes 配置 Apiserver 端点, CA, 命名空间, 和图像, +
region + 键 clusterName),以及AWS证书(EawsAccessKeyId 编号 : awsSecretAccessKey 编号 :
选项 awsSessionToken)在只写后缀中.
两个外观都通过引用来注册后端( Namebackend/runtimes/node/src/container.ts 财务报告和审定财务报表
backend/runtimes/cloudflare/src/infrastructure/container.ts),保持运行时间对称
与当地人 kubernetes 他们的后端延伸.
运行时间到达. 一个真正的 EKS 集群的 apiserver 呈现一个 私营 CA,仅此 可给自定义 CA( 节点/ 本地, 途径) 绑定的运行时间
undici)可以核实:SME约束a 私营kubernetes连接已经携带。 工人登记eks类型用于 对称性,但与此类集群的连接在注册时在前面被拒绝 运行时间不能遵守自定义 CA( R)customTlsSupported: false)),因此它大叫地失败,而不是 初发时默然.
UI 到达
这个 运行 后端是一等UI公民:它通过
RunnerBackendProvider.form 描述符,所以SPA使其通用(区域/组/)
证书 + 共享服务器字段) 没有 EKS 专用前端代码, 相同
现在使用的已内置的 Kubernetes 后端路径 .
这个 环境 后端在按类型解决时具有功能,但尚未被浮出水面
拥有一等环境 引擎 在 SPA 次手选择器中(连接流将)
下至 { kind: 'eks' } 而不是说 { kind: 'kubernetes' }) (中文(简体) ). 那需要一个专注的
InfraEngine('eks') 通过合同引擎联盟 + handlerConfigToBackendConfig + 键
按规定类型的SPA表格
docs/initiatives/descriptor-driven-infra-forms.md。 。 。 .
测试
- 单位 (单位:千美元)
pnpm --filter @cat-factory/eks test:run,在所需的 CI 门内运行: SigV4/STS 令牌 薄荷金向量 + the{ kind: 'eks' }合同往返。 无集群. - 一体化 (单位:千美元)
pnpm --filter @cat-factory/eks test:integration: 驱动 EKS 运输/提供者对a 真实 食人鱼 自动滑行,除非EKS_IT_*已经设定。 运行在 页:1 无阻断test-eksCI 任务( 见.github/workflows/ci.yml) (中文(简体) ).
运行集成套装套装套装以对抗花花
软体 是一个本地的、 localStack 兼容的 AWS 模拟器, 它的 EKS “ 真实模式 ” 站起来 每个 EKS 集群的活性 k3s 容器 并在主机上曝光其 Kubernetes API 服务器 端口 。 Boot floci(被固定在这个套件被验证的版本上),与 AWS CLI,然后导出连接 :
docker run -d --name floci -p 4566:4566 -v /var/run/docker.sock:/var/run/docker.sock -u root floci/floci:1.5.30
export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test AWS_DEFAULT_REGION=us-east-1
aws --endpoint-url=http://localhost:4566 eks create-cluster --name cat-factory-it \
--role-arn arn:aws:iam::000000000000:role/eks --resources-vpc-config '{}'
# ...wait for ACTIVE, then read endpoint + CA:
export EKS_IT_APISERVER=$(aws --endpoint-url=http://localhost:4566 eks describe-cluster --name cat-factory-it --query cluster.endpoint --output text)
export EKS_IT_REGION=us-east-1 EKS_IT_CLUSTER_NAME=cat-factory-it
export EKS_IT_ACCESS_KEY_ID=test EKS_IT_SECRET_ACCESS_KEY=test
export EKS_IT_STS_HOST=localhost:4566 EKS_IT_INSECURE=1
export EKS_IT_RUNNER_IMAGE=cat-factory-mock-harness:it # runner suite only
pnpm --filter @cat-factory/eks run test:integration
这个 stsHost 覆盖( r)EKS_IT_STS_HOST {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢 stsHost) 指标预先签名的STS
GetCallerIdentity URL在 floci 而不是真正的 AWS 。 见 src/test-support/eks-cluster.ts 联 合 国
完全的内存列表 和确切的floci做什么, 不,覆盖在认证层.