EKSクラスターを使用してログを設定しようとしています。現在、単一のEC2インスタンスでクラスターを実行しています。AWSは、必要なkubernetes設定を作成するkubectlコマンドを提供しています。
これを既存のEKSセットアップに適用する場合、CloudWatchへの書き込み権限を持つインスタンスロールを適切に定義できません。
cloudwatchエージェントはポッドログに次のエラーを表示します。
2020-01-07T10:20:14Z E! CreateLogStream / CreateLogGroup with log group name /aws/containerinsights/eks-test-EKS/performance stream name ip-10-0-2-156.eu-central-1.compute.internal has errors. Will retry the request: AccessDeniedException: User: arn:aws:sts::662458865874:assumed-role/eks-test-ekstestEKSDefaultCapacityInstanceRole9446-7MD87BB2AA51/i-01e94e054f3c34383 is not authorized to perform: logs:CreateLogStream on resource: arn:aws:logs:eu-central-1:662458865874:log-group:/aws/containerinsights/eks-test-EKS/performance:log-stream:ip-10-0-2-156.eu-central-1.compute.internal
status code: 400, request id: 645166c7-34fb-4616-9f27-830986e27469
CDKがCloudWatchへの書き込み権限なしでこのcloudformationIAMインスタンスロールを作成するという問題があります。
ekstestEKSDefaultCapacityInstanceRole9446FBA6:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Action: sts:AssumeRole
Effect: Allow
Principal:
Service: ec2.amazonaws.com
Version: "2012-10-17"
ManagedPolicyArns:
- Fn::Join:
- ""
- - "arn:"
- Ref: AWS::Partition
- :iam::aws:policy/AmazonEKSWorkerNodePolicy
- Fn::Join:
- ""
- - "arn:"
- Ref: AWS::Partition
- :iam::aws:policy/AmazonEKS_CNI_Policy
- Fn::Join:
- ""
- - "arn:"
- Ref: AWS::Partition
- :iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
Tags:
- Key: Name
Value: eks-test/eks-test-EKS/DefaultCapacity
- Key:
Fn::Join:
- ""
- - kubernetes.io/cluster/
- Ref: ekstestEKSBA2E781A
Value: owned
Metadata:
aws:cdk:path: eks-test/eks-test-EKS/DefaultCapacity/InstanceRole/Resource
AWSは、「IAMロールを確認する」必要があるとも述べていますが、変更方法がわからないということです。
EKSクラスターコンストラクトでクラスターロールを設定できますが、これは同じではなく、インスタンスロールは不足しているアクセス許可で作成されます。
インスタンスロールを変更できる他のCDKメソッド、または変更されていない場合の回避策はありますか?
更新:CDKのgithubページの問題からこの質問にリンクしました。誰かがサービスアカウント機能の今後のIAMロールについて言及しましたが、kubernetesロールへの「通常の」IAMロールマッピングがここに行く方法であるかどうか疑問に思っています...
更新:役割は、CDKコードに従ってAutoScalingGroupに基づいて作成されているようです。これを上書きして、さまざまな役割を追加できると思います...
DefaultCapacityでクラスターを作成した後、ポリシーを設定できます
const cluster = new Cluster(this, name, clusterProps);
cluster.defaultCapacity?.role.addManagedPolicy(ManagedPolicy.fromAwsManagedPolicyName('CloudWatchFullAccess'));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加