2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Cloudformation】EKS on EC2でAMIを指定した起動テンプレートを使う

Posted at

はじめに

EKSマネージド型ノードグループにおいて、自動生成された起動テンプレートを使用することは便利なのですが、デプロイされるEC2に設定されるセキュリティグループはEKSによって自動生成されるものになってしまいます。

また、公式資料にもある通り、自動生成された起動テンプレートを変更すること推奨されていません。

自動生成された起動テンプレートを変更することは推奨しません。したがって、柔軟性を高めたい場合は、最初にマネージド型ノードグループを作成するときにカスタム起動テンプレートを指定するようにしてください。

Cloudformationでの実装方法

今回は、EKSマネージド型ノードグループで使用する起動テンプレートを、Cfnで作成してみます。
※Amazon Linuxを使用

Userdataに関して、公式資料を初見した際に少しハマったたので、以下にポイントをまとめます。

・起動テンプレートにおいてAMI ID を指定しない場合:
 Userdataは、MIME マルチパートアーカイブ形式である必要がある
image.png

・起動テンプレートにおいてAMI ID を指定した場合
 EKS はUserdataのマージを行わないため、 bootstrap.sh スクリプトの実行を定義する必要がある
image.png
image.png

Cloudformationテンプレート

上記を踏まえ、AMIを指定した起動テンプレートをCfnで作成しました。
以下、起動テンプレートのYamlです。

AWSTemplateFormatVersion: "2010-09-09"
Description: "LaunchTemplate-test"
Parameters:
#===============================================================================
# Parameter
#===============================================================================
  InstanceTypes:
    Type: String

  AmiType:
    Type: String

  DiscSize:
    Type: String
Resources:
#===============================================================================
# Launch Template
#===============================================================================
  LaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties:
      LaunchTemplateName: "Test-LaunchTemplate"
      LaunchTemplateData:
        ImageId: !Ref AmiType
        InstanceType: !Ref InstanceTypes
        SecurityGroupIds:
          - sg-xxxxxxxxxx
        BlockDeviceMappings:
          - DeviceName: /dev/xvda
            Ebs:
              VolumeSize: !Ref DiscSize
              VolumeType: gp2
              DeleteOnTermination: true
        UserData:
          Fn::Base64:
            !Sub |
              #!/bin/bash
              set -o xtrace
              /etc/eks/bootstrap.sh sa-clstr
              /opt/aws/bin/cfn-signal --exit-code $? \
                --stack  ${AWS::StackName} \
                --resource NodeGroup  \
                --region ${AWS::Region}}
      TagSpecifications:
      - ResourceType: "launch-template"
        Tags:
        - Key: Env
          Value:  "test"
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?