EKSのManagedNodeGroupでSSMエージェントをインストールする

ワーカーノードのロールにAmazonSSMManagedInstanceCoreを付与する。

マネージド型ノードグループの起動テンプレートでユーザーデータに以下を書く。

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash

yum install -y amazon-ssm-agent
systemctl enable amazon-ssm-agent
systemctl start amazon-ssm-agent

--==MYBOUNDARY==--

eksctl

eksctlでクラスターの作成時にSSMエージェントを入れるには以下のように書けばよい。

managedNodeGroups:
  - name: managed-ng-1
    minSize: 2
    maxSize: 2
    desiredCapacity: 2
    ssh:
      allow: true
      publicKeyName: default
    iam:
      attachPolicyARNs:
        - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
        - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
        - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
        - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
    preBootstrapCommands:
      - yum install -y amazon-ssm-agent
      - systemctl enable amazon-ssm-agent
      - systemctl start amazon-ssm-agent

と思ったが、以下のオプションがあったので、これだけでよさそう。非マネージドでも同様。

managedNodeGroups:
  - name: managed-ng-1
    minSize: 2
    maxSize: 2
    desiredCapacity: 2
    ssh:
      allow: true
      publicKeyName: default
      enableSsm: true