

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

# Snowball Edge デバイスで Amazon EKS Anywhere を設定して実行する
<a name="eksa-configuration"></a>

以下の手順に従って、Snowball Edge デバイスで Amazon EKS Anywhere を設定して起動します。次に、接続されていないデバイスでも動作するように Amazon EKS Anywhere を設定するには、デバイスを外部ネットワークから切断する前に追加の手順を実行します。詳細については、「[切断されたオペレーション用に Amazon EKS Anywhere on AWS Snow を設定する](configure-disconnected.md)」を参照してください。

**Topics**
+ [Snowball Edge での Amazon EKS Anywhere の初期設定](#initial-setup)
+ [Snowball Edge デバイスで Amazon EKS Anywhere を自動的に設定して実行する](#auto-eksa-configuration)
+ [Snowball Edge デバイスで Amazon EKS Anywhere を手動で設定して実行する](#manual-eksa-configuration)

## Snowball Edge での Amazon EKS Anywhere の初期設定
<a name="initial-setup"></a>

デバイスをローカルネットワークに接続し、Snowball Edge クライアントをダウンロードし、認証情報を取得し、デバイスのロックを解除して、各 Snowball Edge デバイスで初期セットアップを実行します。

**初期セットアップを実行する**

1. Snowball Edge クライアントのダウンロードとインストール 詳細については、「[Snowball Edge クライアントのダウンロードとインストール](using-client-commands.md#download-the-client)」を参照してください。

1. デバイスをローカルネットワークに接続します。詳細については、「[Snowball Edge をローカルネットワークに接続する](getting-started.md#getting-started-connect)」を参照してください。

1. 認証情報を取得して、デバイスのロックを解除します。詳細については、「[Snowball Edge にアクセスするための認証情報の取得](getting-started.md#get-credentials)」を参照してください。

1. デバイスのロックを解除します。詳細については、「[Snowball Edge のロック解除](unlockdevice.md)」を参照してください。デバイスを手動でロック解除する代わりにスクリプトツールを使用することもできます。「[Unlock devices](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/setup-tools#Unlock-devices)」を参照してください。

## Snowball Edge デバイスで Amazon EKS Anywhere を自動的に設定して実行する
<a name="auto-eksa-configuration"></a>

サンプルスクリプトツールを使用して環境を設定し、Amazon EKS Anywhere 管理インスタンスを実行するか、手動で実行することができます。スクリプトツールを使用するには、「[Unlock devices and setup environment for Amazon EKS Anywhere](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/setup-tools#Unlock-devices-and-setup-envorinment-for-EKS-Anywhere)」を参照してください。環境を設定して Amazon EKS Anywhere 管理インスタンスを実行した後、ネットワークに接続されていない Snowball Edge デバイス上で動作するように Amazon EKS Anywhere を設定する必要がある場合は、「[切断されたオペレーション用に Amazon EKS Anywhere on AWS Snow を設定する](configure-disconnected.md)」を参照してください。それ以外の場合は[Snowball Edge デバイスでのクラスターの作成とメンテナンス](maintain-eks-a-clusters-snow.md)を参照してください。

手動で環境を設定し、Amazon EKS Anywhere 管理インスタンスを実行するには、「[Snowball Edge デバイスで Amazon EKS Anywhere を手動で設定して実行する](#manual-eksa-configuration)」を参照してください。

## Snowball Edge デバイスで Amazon EKS Anywhere を手動で設定して実行する
<a name="manual-eksa-configuration"></a>

Snowball Edge デバイスで Amazon EKS Anywhere を設定する前に、Snowball Edge クライアントのプロファイルを設定します。詳細については、「[Snowball Edge クライアントの設定と使用](using-client-commands.md)」を参照してください。

**Topics**
+ [Amazon EKS Anywhere IAM ローカルユーザーを作成する](#create-role)
+ [（オプション) Snowball Edge で Secure Shell キーを作成してインポートする](#create-ssh-key)
+ [Snowball Edge で Amazon EKS Anywhere 管理インスタンスを実行し、認証情報と証明書ファイルを転送します。](#start-config-eksa-admin-instance)

### Amazon EKS Anywhere IAM ローカルユーザーを作成する
<a name="create-role"></a>

セキュリティ上のベストプラクティスとして、Snowball Edge デバイスで Amazon EKS Anywhere のローカル IAM ユーザーを作成します。これは、次の手順を使用して手動で行います。

**注記**  
使用する Snowball Edge デバイスごとにこれを行います。

#### Snowball Edge でローカルユーザーを作成する
<a name="create-eksa-iam-user"></a>

`create-user` コマンドを使用して Amazon EKS Anywhere IAM ユーザーを作成します。

```
aws iam create-user --user-name user-name --endpoint http://snowball-ip:6078 --profile profile-name
    {
        "User": {
            "Path": "/",
            "UserName": "eks-a-user",
            "UserId": "AIDACKCEVSQ6C2EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:user/eks-a-user",
            "CreateDate": "2022-04-06T00:13:35.665000+00:00"
        }
    }
```

#### Snowball Edge でローカルユーザーのポリシーを作成する
<a name="create-eksa-iam-user-policy"></a>

ポリシードキュメントを作成し、これを使用して IAM ポリシーを作成し、そのポリシーを Amazon EKS Anywhere ローカルユーザーにアタッチします。

**ポリシードキュメントを作成して Amazon EKS Anywhere ローカルユーザーにアタッチするには**

1. ポリシードキュメントを作成してコンピュータに保存します。以下のポリシーをドキュメントにコピーします。

------
#### [ JSON ]

****  

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "snowball-device:DescribeDevice",
           "snowball-device:CreateDirectNetworkInterface",
           "snowball-device:DeleteDirectNetworkInterface",
           "snowball-device:DescribeDirectNetworkInterfaces",
           "snowball-device:DescribeDeviceSoftware"
         ],
         "Resource": ["*"]
       },
       {
         "Effect": "Allow",
         "Action": [
           "ec2:RunInstances",
           "ec2:DescribeInstances",
           "ec2:TerminateInstances",
           "ec2:ImportKeyPair",
           "ec2:DescribeKeyPairs",
           "ec2:DescribeInstanceTypes",
           "ec2:DescribeImages",
           "ec2:DeleteTags"
         ],
         "Resource": ["*"]
       }
     ]
   }
   ```

------

1. `create-policy` コマンドを使用して、ポリシードキュメントに基づいて IAM ポリシーを作成します。`--policy-document` パラメータの値には、ポリシーファイルへの絶対パスを使用する必要があります。例: `file:///home/user/policy-name.json`

   ```
   aws iam create-policy --policy-name policy-name --policy-document file:///home/user/policy-name.json --endpoint http://snowball-ip:6078 --profile profile-name
   {
       "Policy": {
           "PolicyName": "policy-name",
           "PolicyId": "ANPACEMGEZDGNBVGY3TQOJQGEZAAAABP76TE5MKAAAABCCOTR2IJ43NBTJRZBU",
           "Arn": "arn:aws:iam::123456789012:policy/policy-name",
           "Path": "/",
           "DefaultVersionId": "v1",
           "AttachmentCount": 0,
           "IsAttachable": true,
           "CreateDate": "2022-04-06T04:46:56.907000+00:00",
           "UpdateDate": "2022-04-06T04:46:56.907000+00:00"
       }
   }
   ```

1. `attach-user-policy` コマンドを使用して、IAM ポリシーを Amazon EKS Anywhere ローカルユーザーにアタッチします。

   ```
   aws iam attach-user-policy --policy-arn policy-arn --user-name user-name --endpoint http://snowball-ip:6078 --profile profile-name     
   ```

#### Snowball Edge でアクセスキーと認証情報ファイルを作成する
<a name="create-eksa-iam-user-access-key"></a>

Amazon EKS Anywhere IAM ローカルユーザーのアクセスキーを作成します。次に、認証情報ファイルを作成し、ローカルユーザー用に生成された `AccessKeyId` と `SecretAccessKey` の値をその中に含めます。認証情報ファイルは、後で Amazon EKS Anywhere 管理インスタンスによって使用されます。

1. `create-access-key` コマンドを使用して、Amazon EKS Anywhere ローカルユーザーのアクセスキーを作成します。

   ```
   aws iam create-access-key --user-name user-name --endpoint http://snowball-ip:6078 --profile profile-name
       {
           "AccessKey": {
               "UserName": "eks-a-user",
               "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
               "Status": "Active",
               "SecretAccessKey": "RTT/wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
               "CreateDate": "2022-04-06T04:23:46.139000+00:00"
           }
       }
   ```

1. 認証情報ファイルを作成します。その中に、`AccessKeyId` と `SecretAccessKey` の値を次の形式で保存します。

   ```
   [snowball-ip] 
   aws_access_key_id = ABCDEFGHIJKLMNOPQR2T
   aws_secret_access_key = AfSD7sYz/TBZtzkReBl6PuuISzJ2WtNkeePw+nNzJ
   region = snow
   ```
**注記**  
複数の Snowball Edge デバイスを使用している場合、ファイル内の認証情報の順序は関係ありませんが、すべてのデバイスの認証情報を 1 つのファイルに含める必要があります。

#### Snowball Edge で管理インスタンスの証明書ファイルを作成する
<a name="create-credentials-for-admin-instance"></a>

Amazon EKS Anywhere 管理インスタンスを実行するには、Snowball Edge デバイスの証明書が必要です。Snowball Edge デバイスにアクセスするための証明書を含む証明書ファイルを作成し、後で Amazon EKS Anywhere 管理インスタンスで使用できるようにします。

**証明書ファイルを作成するには**

1. `list-certificates` コマンドを使用して、使用を予定している各 Snowball Edge デバイスの証明書を取得します。

   ```
   PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge list-certificates --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code
   {
     "Certificates" : [ {
       "CertificateArn" : "arn:aws:snowball-device:::certificate/xxx",
       "SubjectAlternativeNames" : [ "ID:JID-xxx" ]
     } ]
   }
   ```

1. `CertificateArn` の値を `get-certificate` コマンドの `--certificate-arn` パラメータの値として使用します。

   ```
   PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge get-certificate --certificate-arn ARN --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code            
   ```

1. デバイス証明書ファイルを作成します。`get-certificate` の出力を証明書ファイルに含めます。以下は、出力の保存方法の例です。
**注記**  
複数の Snowball Edge デバイスを使用している場合、ファイル内の認証情報の順序は関係ありませんが、すべてのデバイスの認証情報を 1 つのファイルに含める必要があります。

   ```
   -----BEGIN CERTIFICATE-----
   ZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGUgZWtzYSBzbm93IHRlc3QgY2VydGlm  
   aWNhdGVla3NhIHNub3cgdGVzdCBjZXJ0aWZpY2F0ZWVrc2Egc25vdyB0ZXN0IGNl  
   cnRpZmljYXRlZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGVla3NhIHNub3cgdGVz  
   dCBjZXJ0aWZpY2F0ZQMIIDXDCCAkSgAwIBAgIJAISM0nTVmbj+MA0GCSqGSIb3DQ  
   ...                                                               
   -----END CERTIFICATE-----
   ```

1. 「[Amazon EKS Anywhere IAM ローカルユーザーを作成する](#create-role)」の手順を繰り返して、すべての Snowball Edge デバイスで Amazon EKS Anywhere の IAM ローカルユーザーを作成します。

### （オプション) Snowball Edge で Secure Shell キーを作成してインポートする
<a name="create-ssh-key"></a>

このオプションの手順を使用して、すべての Amazon EKS Anywhere ノードインスタンスにアクセスするためのSecure Shell (SSH) キーを作成し、そのパブリックキーをすべての Snowball Edge デバイスにインポートします。このキーファイルは安全に保管してください。

この手順をスキップした場合、Amazon EKS Anywhere は必要なときに SSH キーを自動的に作成してインポートします。このキーは `${PWD}/${CLUSTER_NAME}/eks-a-id_rsa` の管理インスタンスに保存されます。

**SSH キーを作成して Amazon EKS Anywhere インスタンスにインポートする**

1. `ssh-keygen` コマンドを使用して SSH キーを生成します。

   ```
   ssh-keygen -t rsa -C "key-name" -f path-to-key-file
   ```

1. `import-key-pair` コマンドを使用して、コンピュータから Snowball Edge デバイスにキーをインポートします。
**注記**  
キーをすべてのデバイスにインポートする場合、`key-name` パラメータの値は同じでなければなりません。

   ```
   aws ec2 import-key-pair --key-name key-name --public-key-material fileb:///path/to/key-file --endpoint http://snowball-ip:8008 --profile profile-name 
   {
       "KeyFingerprint": "5b:0c:fd:e1:a0:69:05:4c:aa:43:f3:3b:3e:04:7f:51",
       "KeyName": "default",
       "KeyPairId": "s.key-85edb5d820c92a6f8"
   }
   ```

### Snowball Edge で Amazon EKS Anywhere 管理インスタンスを実行し、認証情報と証明書ファイルを転送します。
<a name="start-config-eksa-admin-instance"></a>

#### Snowball Edge で Amazon EKS Anywhere 管理インスタンスを実行する
<a name="start-admin-instance"></a>

以下の手順に従って、Amazon EKS Anywhere 管理インスタンスを手動で実行し、管理インスタンスに仮想ネットワークインターフェイス (VNI) を設定し、インスタンスのステータスを確認し、SSH キーを作成し、これを使用して管理インスタンスに接続します。サンプルスクリプトツールを使用すると、Amazon EKS Anywhere 管理インスタンスの作成と、このインスタンスへの認証情報と証明書ファイルの転送を自動化できます。「[Create Amazon EKS Anywhere admin instance](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/setup-tools#Create-EKS-Anywhere-admin-instance)」を参照してください。スクリプトツールが完了したら、「[Snowball Edge デバイスでのクラスターの作成とメンテナンス](maintain-eks-a-clusters-snow.md)」を参照してインスタンスに SSH 接続し、クラスターを作成できます。Amazon EKS Anywhere インスタンスを手動でセットアップする場合は、以下のステップに従います。

**注記**  
クラスターのプロビジョニングに複数の Snowball Edge デバイスを使用している場合は、どの Snowball Edge デバイスでも Amazon EKS Anywhere 管理インスタンスを起動できます。

**Amazon EKS Anywhere 管理インスタンスを実行するには**

1. `create-key-pair` コマンドを使用して Amazon EKS Anywhere 管理インスタンス用の SSH キーを作成します。このコマンドはキーを `$PWD/key-file-name` に保存します。

   ```
   aws ec2 create-key-pair --key-name key-name --query 'KeyMaterial' --output text --endpoint http://snowball ip:8008 > key-file-name --profile profile-name
   ```

1. `describe-images` コマンドを使用して、`eks-anywhere-admin` で始まるイメージ名を出力で検索します。

   ```
   aws ec2 describe-images --endpoint http://snowball-ip:8008 --profile profile-name
   ```

1. `run-instance` コマンドを使用して、Amazon EKS Anywhere 管理イメージで eks-a 管理インスタンスを起動します。

   ```
   aws ec2 run-instances --image-id eks-a-admin-image-id --key-name key-name --instance-type sbe-c.xlarge --endpoint http://snowball-ip:8008 --profile profile-name
   ```

1. Amazon EKS Anywhere インスタンスのステータスを確認するには、`describe-instances` コマンドを使用します。コマンドが `running` のインスタンスの状態を示すまで待ってから、次に進みます。

   ```
   aws ec2 describe-instances --instance-id instance-id --endpoint http://snowball-ip:8008 --profile profile-name
   ```

1. `describe-device` コマンドの出力から、ネットワークに接続されている物理ネットワークインターフェイスの `PhysicalNetworkInterfaceId` の値を書き留めます。これを使用して VNI を作成します。

   ```
    
   PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge describe-device --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code
   ```

1. Amazon EKS Anywhere 管理インスタンス用の VNI を作成します。`PhysicalNetworkInterfaceId` の値を `physical-network-interface-id` パラメータの値として使用します。

   ```
   PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge create-virtual-network-interface --ip-address-assignment dhcp --physical-network-interface-id PNI --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code
   ```

1. `IpAddress` の値を `associate-address` コマンドの `public-ip` パラメータの値として使用して、パブリックアドレスを Amazon EKS Anywhere 管理インスタンスに関連付けます。

   ```
   aws ec2 associate-address --instance-id instance-id --public-ip VNI-IP --endpoint http://snowball-ip:8008 --profile profile-name 
   ```

1. Amazon EKS Anywhere の管理インスタンスに SSH で接続します。

   ```
   ssh -i path-to-key ec2-user@VNI-IP      
   ```

#### Snowball Edge の管理者インスタンスに証明書と認証情報ファイルを転送する
<a name="transfer-cred-cert-files"></a>

Amazon EKS Anywhere 管理インスタンスが実行されたら、Snowball Edge デバイスの認証情報と証明書を管理インスタンスに転送します。「[Snowball Edge でアクセスキーと認証情報ファイルを作成する](#create-eksa-iam-user-access-key)」と「[Snowball Edge で管理インスタンスの証明書ファイルを作成する](#create-credentials-for-admin-instance)」で認証情報と証明書ファイルを保存したディレクトリで、次のコマンドを実行します。

```
scp -i path-to-key path-to-credentials-file path-to-certificates-file ec2-user@eks-admin-instance-ip:~        
```

Amazon EKS Anywhere 管理インスタンス上のファイルの内容を確認します。以下は認証情報と証明書ファイルの例です。

```
[192.168.1.1] 
aws_access_key_id = EMGEZDGNBVGY3TQOJQGEZB5ULEAAIWHWUJDXEXAMPLE 
aws_secret_access_key = AUHpqjO0GZQHEYXDbN0neLNlfR0gEXAMPLE 
region = snow 

[192.168.1.2] 
aws_access_key_id = EMGEZDGNBVGY3TQOJQGEZG5O7F3FJUCMYRMI4KPIEXAMPLE 
aws_secret_access_key = kY4Cl8+RJAwq/bu28Y8fUJepwqhDEXAMPLE 
region = snow
```

```
-----BEGIN CERTIFICATE-----                                      
ZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGUgZWtzYSBzbm93IHRlc3QgY2VydGlm  
aWNhdGVla3NhIHNub3cgdGVzdCBjZXJ0aWZpY2F0ZWVrc2Egc25vdyB0ZXN0IGNl  
cnRpZmljYXRlZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGVla3NhIHNub3cgdGVz  
dCBjZXJ0aWZpY2F0ZQMIIDXDCCAkSgAwIBAgIJAISM0nTVmbj+MA0GCSqGSIb3DQ  
...                                                               
-----END CERTIFICATE-----                                         

-----BEGIN CERTIFICATE-----                                       
KJ0FPl2PAYPEjxr81/PoCXfZeARBzN9WLUH5yz1ta+sYUJouzhzWuLJYA1xqcCPY  
mhVlkRsN4hVdlBNRnCCpRF766yjdJeibKVzXQxoXoZBjrOkuGwqRy3d3ndjK77h4  
OR5Fv9mjGf7CjcaSjk/4iwmZvRSaQacb0YG5GVeb4mfUAuVtuFoMeYfnAgMBAAGj  
azBpMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFL/bRcnBRuSM5+FcYFa8HfIBomdF  
...                                                              
-----END CERTIFICATE-----
```