ワーカーノードのロールに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
と思ったが、以下のオプションがあったので、これだけでよさそう。非マネージドでも同様。
- https://eksctl.io/usage/schema/#nodeGroups-ssh-enableSsm
- https://eksctl.io/usage/schema/#managedNodeGroups-ssh-enableSsm
managedNodeGroups: - name: managed-ng-1 minSize: 2 maxSize: 2 desiredCapacity: 2 ssh: allow: true publicKeyName: default enableSsm: true