AWS Systems Manager Automation を使用して Amazon Elastic Kubernetes Service (Amazon EKS) ワーカーノード Amazon マシンイメージ (AMI) にセキュリティパッチを適用したいと考えています。
解決策
AWS Systems Manager Automation ランブックを使用して Amazon EKS ワーカーノードにセキュリティパッチを適用します。ランブックを使用して新しいバージョンを適用し、マネージドノードグループやセルフマネージドノードのセキュリティパッチ適用とバージョンアップグレードを自動化します。
マネージドノードグループに対して AWS Systems Manager Automation を使用する
AWS-UpdateEKSManagedNodeGroup ランブックを実行するには、次の手順を実行してください。
- AWS マネジメントコンソールを開きます。
- Amazon EKS クラスターが配置されている AWS リージョンを選択します。
- AWS Systems Manager コンソールを開きます。
- ナビゲーションペインで、[オートメーション] を選択します。
- [ランブックを実行] を選択します。
- [オートメーションランブック] の検索フィールドに AWS-UpdateEKSManagedNodeGroup と入力し、[AWS-UpdateEKSManagedNodeGroup] ランブックを選択します。
注: 新しいブラウザウィンドウでランブックの詳細タブが開きます。
- [オートメーションの実行] を選択します。
注: 新しいブラウザウィンドウで [オートメーションランブックを実行する] タブが開きます。
- [入力パラメータ] に、次のパラメータを入力します。
ClusterName にはノードグループを含む Amazon EKS クラスターの名前を入力します。
NodeGroupName には、更新するノードグループの名前を入力します。
UpdateType は、[ノードグループバージョンを更新] を選択します。
ForceUpdate については、ポッド中断の予算に関する問題により既存のノードグループのポッドをドレインできない場合、[True] を選択します。それ以外の場合は、[False] を選択します。
(オプション) AutomationAssumeRole には、Systems Manager Automation がユーザーに代わってアクションを実行するための AWS Identity and Access Management (IAM) ロール Amazon リソースネーム (ARN) を入力します。ロールが指定されていない場合、Systems Manager Automation はランブックを開始するユーザーのアクセス許可を使用します。
- 起動テンプレートからノードグループを作成しなかった場合は、次のパラメータを指定します。
(オプション) KubernetesVersion には、ノードグループの更新先の Kubernetes バージョンを入力します。例えば、1.30 と入力します。
(オプション) AMIReleaseVersion には、使用したい Amazon EKS 最適化 AMI のバージョンを入力します。例えば、1.30.2-20240828 と入力します。システムはデフォルトで最新バージョンを使用します。
- 起動テンプレートからノードグループを作成した場合は、次のパラメータを指定できます。
(オプション) LaunchTemplateId には起動テンプレートの ID を入力します。
(オプション) LaunchTemplateName には起動テンプレートの名前を入力します。
- [実行] を選択します。
セルフマネージドノードグループに対して AWS Systems Manager Automation を使用する
重要: クラスターが Auto Scaling を使用している場合は、ランブックを実行する前に、cluster-autoscaler デプロイを 2 つのレプリカにスケールダウンする必要があります。cluster-autoscaler デプロイをスケールダウンするには、次のコマンドを実行します。
kubectl scale deployments/cluster-autoscaler --replicas=2 -n kube-system
AWS-UpdateEKSSelfManagedLinuxNodeGroups ランブックを実行するには、以下の手順を実行してください。
- AWS マネジメントコンソールを開きます。
- Amazon EKS クラスターが配置されている AWS リージョンを選択します。
- AWS Systems Manager コンソールを開きます。
- ナビゲーションペインで、[オートメーション] を選択します。
- [ランブックを実行] を選択します。
- [オートメーションランブック] の検索フィールドに AWS-UpdateEKSSelfManagedLinuxNodeGroups と入力し、[AWS-UpdateEKSSelfManagedLinuxNodeGroups] ランブックを選択します。
注: 新しいブラウザウィンドウでランブックの詳細タブが開きます。
- [オートメーションの実行] を選択します。
注: 新しいブラウザウィンドウで [オートメーションランブックを実行する] タブが開きます。
- [入力パラメータ] に、次のパラメータを入力します。
(オプション) AutomationAssumeRole には、Systems Manager Automation がユーザーに代わってアクションを実行するための IAM ロール ARN を入力します。ロールが指定されていない場合、Systems Manager Automation はランブックを開始するユーザーのアクセス許可を使用します。
StackName には、セルフマネージドノード用の AWS CloudFormation スタック名を入力します。
NodeAutoScalingGroupDesiredCapacity には、ノードグループが維持するノード数を入力します。
NodeAutoScalingGroupMaxSize には、ノードの Auto Scaling グループの最大ノード数を入力します。
NodeInstanceType には、ノードグループで使用するインスタンスタイプを入力します。
NodeImageIdSSMParam には、ノードグループ AMI の Parameter Store パスを入力します。
(オプション) NodeImageId にノードグループの AMI ID を入力すると、NodeImageIdSSMParam で指定された値がすべて上書きされます。
DisableIMDSv1 では、IMDSv1 をオフにするかどうかを選択します。
WaitForStackUpdateProgress には、スタックのステータスを評価する前に、起動テンプレートのスタック更新やローリングアップデートが開始されるための時間を確保するためにオートメーションが待機する時間を秒単位で入力します。
- [実行] を選択します。
- 更新が完了した後、cluster-autoscaler デプロイを必要なレプリカ数にスケールバックするには、次のコマンドを実行します。
kubectl scale deployments/cluster-autoscaler --replicas=number -n kube-system
注: number は、使用するレプリカ数に置き換えてください。
関連情報
クラスターのためにマネージドノードグループを更新する
クラスターのためにセルフマネージドノードを更新する
独自のランブックの作成