如何使用 C# 实现 Pulumi EKS RoleMappings

How can I achieve Pulumi EKS RoleMappings with C#

Amazon EKS 中有 Kubernetes RBAC,带有适用于 TypeScript 的 Pulumi 指令。

const vpc = new awsx.ec2.Vpc("vpc", {});
const cluster = new eks.Cluster("eks-cluster", {
  vpcId             : vpc.id,
  subnetIds         : vpc.publicSubnetIds,
  instanceType      : "t2.medium",
  nodeRootVolumeSize: 200,
  desiredCapacity   : 1,
  maxSize           : 2,
  minSize           : 1,
  deployDashboard   : false,
  vpcCniOptions     : {
    warmIpTarget    : 4,
  },
  roleMappings      : [
    // Provides full administrator cluster access to the k8s cluster
    {
      groups    : ["system:masters"],
      roleArn   : clusterAdminRole.arn,
      username  : "pulumi:admin-usr",
    },
    // Map IAM role arn "AutomationRoleArn" to the k8s user with name "automation-usr", e.g. gitlab CI
    {
      groups    : ["pulumi:automation-grp"],
      roleArn   : AutomationRole.arn,
      username  : "pulumi:automation-usr",
    },
    // Map IAM role arn "EnvProdRoleArn" to the k8s user with name "prod-usr"
    {
      groups    : ["pulumi:prod-grp"],
      roleArn   : EnvProdRole.arn,
      username  : "pulumi:prod-usr",
    },
  ],
});

Kubernetes RBAC in AWS EKS with open source Pulumi packages | Pulumi https://www.pulumi.com/blog/simplify-kubernetes-rbac-in-amazon-eks-with-open-source-pulumi-packages/

我正在寻找如何使用 .NET C# 实现此目的? 看起来 eks roleMappings 扩展仅适用于 TypeScript,因此可能需要 C# 使用 Pulumi.Kubernetes?

构建 configmap 清单

https://github.com/pulumi/pulumi-aws/blob/c672e225a765b11b07ea23e7b1b411483d7f38da/sdk/dotnet/Eks/Cluster.cs

https://github.com/pulumi/pulumi-eks

pulumi-eks 包目前仅在 TypeScript 中可用。计划在今年晚些时候将它引入所有语言,但现在你基本上有两个选择:

  1. 使用打字稿。如果需要,将您的完整部署分解为多个堆栈。定义 EKS 包的堆栈将使用 TypeScript,而其他堆栈可以使用 C#。

  2. 参考您上面链接的 pulumi-eks 实现并将该代码手动传输到 C#。这是一项非常重要的工作,因此请谨慎估计可行性。