

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# prebootstrapコマンドを使用して、SSM エージェントと CloudWatch エージェントを Amazon EKS ワーカーノードにインストールします。
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands"></a>

*Amazon Web Services、Akkamahadevi Hiremath*

## 概要
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-summary"></a>

このパターンは、Amazon EKS クラスターの作成中に AWS Systems Manager Agent (SSM Agent) と Amazon CloudWatch エージェントをAmazon Web Services (AWS) クラウド内の Amazon Elastic Kubernetes Service (Amazon EKS) ワーカーノードにインストールするためのコードサンプルと手順を提供します。SSM エージェントと CloudWatch エージェントは、`eksctl`「[設定ファイルスキーマ](https://eksctl.io/usage/schema/)」 (Weaveworks ドキュメント) `preBootstrapCommands`のプロパティを使用してインストールできます。そうすれば、Amazon Elastic Compute Cloud (Amazon EC2) key pair を使用せずに SSM Agent を使用してワーカーノードに接続できます。さらに、CloudWatch エージェントを使用して Amazon EKS ワーカーノードのメモリとディスクの使用状況をモニタリングできます。

## 前提条件と制限
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ macOS、Linux、または Windows で、インストールおよび設定されている「[eksctl コマンドラインユーティリティ](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html)」
+ macOS、Linux、または Windows で、インストールおよび設定されている「[kubectl コマンドラインユーティリティ](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)」

**制限事項**
+ 実行時間の長いスクリプトは`preBootstrapCommands`** **プロパティに追加しないことをお勧めします。追加すると、スケーリングアクティビティ中にノードが Amazon EKS クラスターに参加するのが遅れるためです。代わりに「[カスタム Amazon Machine Image (AMI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customenv.html)」を作成することをお勧めします。
+ このパターンは、Amazon EC2 Linux インスタンスにのみ適用されます。

## アーキテクチャ
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-architecture"></a>

**テクノロジースタック**
+ Amazon CloudWatch
+ Amazon Elastic Kubernetes Service (Amazon EKS)
+ Systems Manager Parameter Store

**ターゲットアーキテクチャ**

次の図は、`preBootstrapCommands`を使用してインストールされた SSM エージェントを使用して Amazon EKS ワーカーノードに接続するユーザーの例を示しています。

![\[User connecting to Amazon EKS worker nodes via Systems Manager, with SSM Agent and CloudWatch agent on each node.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/b37a3cdb-204f-4014-8317-3600a793dac7/images/9a5760af-23bb-4616-97b0-b401a9d080cf.png)


この図表は、次のワークフローを示しています:

1. ユーザは、`preBootstrapCommands`プロパティを持つ`eksctl`設定ファイルを使用してAmazon EKSクラスタを作成し、SSMエージェントとCloudWatchエージェントをインストールします。

1. スケーリングアクティビティによって後でクラスターに追加される新しいインスタンスは、プレインストールされた SSM エージェントと CloudWatch エージェントを使用して作成されます。

1. ユーザーは SSM エージェントを使用して Amazon EC2 に接続し、CloudWatch エージェントを使用してメモリとディスクの使用状況をモニタリングします。

## ツール
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-tools"></a>
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) は、AWS のリソースや、AWS で実行されるアプリケーションをリアルタイムに監視します。
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) は、AWS で Kubernetes を実行する際に役立ち、独自の Kubernetes コントロールプレーンまたはノードをインストールまたは維持する必要はありません。
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) は、設定データ管理とシークレット管理用の安全な階層型ストレージを提供します。
+ 「[AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)」は、AWS Systems Manager で、インタラクティブなワンクリックブラウザベースのシェルまたは AWS CLI Command Line Interface (AWS CLI) を介して管理できます。
+ [eksctl](https://eksctl.io/usage/schema/) – これは Amazon EKS で Kubernetes クラスターを作成および管理するコマンドラインユーティリティです。
+ [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) – これはクラスター API サーバーとの通信用コマンドラインユーティリティです。

## エピック
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-epics"></a>

### Amazon EKS クラスターを作成します。
<a name="create-an-amazon-eks-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CloudWatch エージェント設定ファイルを保存します。 | CloudWatch エージェント設定ファイルを、Amazon EKS クラスターを作成する AWS リージョンの「[AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)」に保存します。これを行うには、AWS Systems Manager Parameter Storeで「[パラメータを作成](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html)」し、パラメータの名前 (例：`AmazonCloudwatch-linux`) を書き留めます。詳細については、このパターンの「[追加情報](#install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-additional)」セクションにある「*CloudWatch エージェント設定ファイルの例*」を参照してください。 | DevOps エンジニア | 
| eksctl 設定ファイルとクラスターを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands.html) | AWS DevOps | 

### SSM エージェントと CloudWatch エージェントが動作することを確認する
<a name="verify-that-the-ssm-agent-and-cloudwatch-agent-work"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SSM Agent をテストします。 | SSH を使用して、AWS Systems Manager ドキュメントの「[セッションの開始](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#start-ec2-console%20%20or%20https:%2F%2Fdocs.aws.amazon.com%2Fsystems-manager%2Flatest%2Fuserguide%2Fsession-manager-working-with-sessions-start.html%23sessions-start-cli)」で説明されている方法のいずれかを使用して Amazon EKS クラスターノードに接続します。 | AWS DevOps | 
| CloudWatch エージェントをテストします。 | CloudWatch コンソールを使用して CloudWatch エージェントを検証します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands.html) | AWS DevOps | 

## 関連リソース
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-resources"></a>
+ [サーバーにエージェントをインストールして実行する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html) (Amazon CloudWatch ドキュメント)
+ [Systems Manager パラメータを作成する (コンソール)](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html) (AWS Systems Manager ドキュメント)
+ [CloudWatch エージェント設定ファイルを作成する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html) (Amazon CloudWatch ドキュメント)
+ [セッションを開始します](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-start-cli) (AWS Systems Manager のドキュメント)
+ [セッションを開始する (Amazon EC2 コンソール)](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#start-ec2-console) (AWS Systems Manager ドキュメント)

## 追加情報
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-additional"></a>

**CloudWatch エージェント設定ファイルの例**

次の例では、CloudWatch エージェントは Amazon Linux インスタンスのディスクとメモリの使用状況を監視するように設定されています。

```
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "cwagent"
    },
    "metrics": {
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}
```

**eksctl 設定ファイルの例**

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: test
  region: us-east-2
  version: "1.24"
managedNodeGroups:
  - name: test
    minSize: 2
    maxSize: 4
    desiredCapacity: 2
    volumeSize: 20
    instanceType: t3.medium
    preBootstrapCommands:
    - sudo yum install amazon-ssm-agent -y
    - sudo systemctl enable amazon-ssm-agent
    - sudo systemctl start amazon-ssm-agent
    - sudo yum install amazon-cloudwatch-agent -y
    - sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudwatch-linux
    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/CloudWatchAgentServerPolicy
        - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
```

**その他のコードの詳細**
+ `preBootstrapCommands`プロパティの最後の行には、`AmazonCloudwatch-linux`はAWS System Manager Parameter Storeで作成されたパラメータ名です。Amazon EKS クラスターを作成したときと同じ AWS リージョンのパラメータストアに`AmazonCloudwatch-linux`を含める必要があります。ファイルパスを指定することもできますが、自動化と再利用を容易にするために Systems Manager を使用することをお勧めします。
+ `eksctl`設定ファイルで`preBootstrapCommands`を使用すると、AWS マネジメントコンソールに 2 つの起動テンプレートが表示されます。最初の起動テンプレートには、`preBootstrapCommands`で指定されているコマンドが含まれています。2 番目のテンプレートには、`preBootstrapCommands`で指定されているコマンドとデフォルトの Amazon EKS ユーザーデータが含まれます。このデータは、ノードをクラスターに参加させるために必要です。ノードグループの Auto Scaling グループは、このユーザーデータを使用して新しいインスタンスを起動します。
+ `eksctl`設定ファイルの`iam`属性を使用する場合は、デフォルトの Amazon EKS ポリシーと、添付AWS Identity and Access Management (IAM) ポリシーに必要な追加ポリシーを一覧表示する必要があります。「*eksctl 設定ファイルとクラスターの作成*」ステップのコードスニペットには、`CloudWatchAgentServerPolicy`と`AmazonSSMMangedInstanceCore`は、CloudWatchエージェントとSSMエージェントが期待どおりに動作することを確認するために追加されたポリシーです。`AmazonEKSWorkerNodePolicy`、`AmazonEKS_CNI_Policy`、`AmazonEC2ContainerRegistryReadOnly`ポリシーは Amazon EKS クラスターが正しく機能するために必要な必須ポリシーです。