3.WordpressをEKS(1/n)-EFSを設定


EKS環境にWordrpestを配備します.
Wordpressコンポーネントは公開管理され、MySQLコンポーネントは専用管理されます.
Wordpressはサービスのタイプを利用することができます:LoadBankまたはIngressはサービスを露出します.
まず1番案で次のヒントも2番方法で( リファレンス )

1.1設置要求


インストール要件

  • インストールツール:eksctl
  • ノード数:3個
  • バージョン:
  • Wordpress詳細

  • 導入:
  • ×2
  • Secret
  • の利用
  • SVC:LoadBarangerタイプ生成
  • インポート(オプション):ドメインを作成してRoute 53に割り当てる
  • PVC : EFS
  • 1.2 EFS構成


    Amazon EKSクラスタのAmazonEFSファイルシステムを作成します.

    1.2.1 Amazon EKSクラスタにAmazon EFS CSIドライバを配備する(IAMポリシーとロールの作成)

  • CSIドライバのサービスアカウントでは、AWSDIがユーザーの代わりに使用されます.
  • GitHubからIAMポリシードキュメントをダウンロードします。

    curl -o iam-policy-example.json https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/v1.2.0/docs/iam-policy-example.json
    ポリシーを作成します.次のAmazonEKS_EFS_CSI_Driver_Policyを別の名前に変更できますが、そうする場合は、次の手順で変更する必要があります.
    aws iam create-policy \
        --policy-name AmazonEKS_EFS_CSI_Driver_Policy \
        --policy-document file://iam-policy-example.json
  • IAMロールを作成し、このロールにIAMポリシーを接続します.IAMロールのコメントをKubernetesサービスアカウントに追加し、Kubernetesサービスアカウント名に追加します.ロールを作成します.
  • 次のコマンドは、IAMロールおよびKoubernetesサービスアカウントを作成します.ポリシーをロールに接続し、IAMロールをKoubernetesサービスアカウントに追加し、Koubernetesサービスアカウント名をIAMロールの信頼ポリシーに追加します.クラスタにIAM OIDCプロバイダがない場合、コマンドはIAM OIDCプロバイダも作成します.
    eksctl create iamserviceaccount \
        --name efs-csi-controller-sa \
        --namespace kube-system \
        --cluster <cluster-name> \
        --attach-policy-arn arn:aws:iam::<Account ID>:policy/AmazonEKS_EFS_CSI_Driver_Policy \
        --approve \
        --override-existing-serviceaccounts \
        --region ap-northeast-2
    

    1.2.2 Amazon Amazon EFSドライバのインストール


    このプロセスには少なくともHelm V 3が必要です.
    インストールHelm
    ->
  • helmリポジトリを追加します.
  • helm repo add aws-efs-csi-driver https://kubernetes-sigs.github.io/aws-efs-csi-driver/
  • リポジトリを更新してください.
  • helm repo update
  • チャートをインストールします.クラスタがap-東北-2地域にない場合は、セル
  • に適合するようにアドレスを変更してください.
    helm upgrade -i aws-efs-csi-driver aws-efs-csi-driver/aws-efs-csi-driver \
        --namespace kube-system \
        --set image.repository=602401143452.dkr.ecr.ap-northeast-2.amazonaws.com/eks/aws-efs-csi-driver \
        --set serviceAccount.controller.create=false \
        --set serviceAccount.controller.name=efs-csi-controller-sa

    1.2.3 Amazon EKSクラスタのAmazon EFSファイルシステムを作成するには

  • クラスタを含むVCC IDを検索し、その後のステップで使用するために変数に保存します.Replace(<>)をクラスタユーザー名に変更します.
  • vpc_id=$(aws eks describe-cluster \
        --name <cluster-name> \
        --query "cluster.resourcesVpcConfig.vpcId" \
        --output text)
  • クラスタ上のVPCのCIDR範囲を検索し、その後のステップで使用するために変数に保存します.
  • cidr_range=$(aws ec2 describe-vpcs \
        --vpc-ids $vpc_id \
        --query "Vpcs[].CidrBlock" \
        --output text)
  • AmazonEFSマウントポイントでのインバウンドNFS通信を許可するインバウンド・ルールを使用して、セキュリティ・グループを作成します.
  • 1.セキュリティグループを作成します。置換example値を値に置き換えてください。

    security_group_id=$(aws ec2 create-security-group \
        --group-name MyEfsSecurityGroup \
        --description "My EFS security group" \
        --vpc-id $vpc_id \
        --output text)
    ####2. クラスタ内のVPCに対してCIDRがインバウンドNFS通信を許可するインバウンドルールを作成します.
    aws ec2 authorize-security-group-ingress \
        --group-id $security_group_id \
        --protocol tcp \
        --port 2049 \
        --cidr $cidr_range

    1.2.4 Amazon EKSクラスタのAmazon EFSファイルシステムを作成します。

  • ファイルシステムを作成します.
  • file_system_id=$(aws efs create-file-system \
        --region ap-northeast-2 \
        --performance-mode generalPurpose \
        --query 'FileSystemId' \
        --output text)

  • 読み込みターゲットを作成します.
    1.クラスタノードのIPアドレスを決定します.
  • kubectl get nodes
    2.VPCのサブネットIDとサブネットが存在する利用可能領域を確認する.
    aws ec2 describe-subnets \
        --filters "Name=vpc-id,Values=$vpc_id" \
        --query 'Subnets[*].{SubnetId: SubnetId,AvailabilityZone: AvailabilityZone,CidrBlock: CidrBlock}' \
        --output table
    結果
    |                           DescribeSubnets                          |
    +------------------+--------------------+----------------------------+
    | AvailabilityZone |     CidrBlock      |         SubnetId           |
    +------------------+--------------------+----------------------------+
    |  ap-northeast-2c      |  192.168.128.0/19  |  subnet-6e421a0e97  |
    |  ap-northeast-2b      |  192.168.96.0/19   |  subnet-d0503db0ec  |
    |  ap-northeast-2c      |  192.168.32.0/19   |  subnet-2ba886490  |
    |  ap-northeast-2b      |  192.168.0.0/19    |  subnet-123c7c5182  |
    |  ap-northeastt-2a      |  192.168.160.0/19  |  subnet-EXAMPLE0416ce588p  |
    |  ap-northeast-2a      |  192.168.64.0/19   |  subnet-12c68ea7fb  |
    +------------------+--------------------+----------------------------+
    3.ノードが存在するサブネットにマウントターゲットを追加します.最初の2ステップの出力では、クラスタのIPアドレスは`192.168.56.0です.IPアドレスはCidrBlockサブネットのIDSubnet-EXAMPLE 2 ba 886490である.したがって、次のコマンドは、ノードが存在するサブネットのマウントターゲットを作成します.クラスタ内により多くのノードが存在する場合、ノードが存在するAZサブネットごとにコマンドが発行され、サブネット-EXAMPLE 2 ba 886490が対応するサブネットIDに置き換えられる.
    aws efs create-mount-target \
        --file-system-id $file_system_id \
        --subnet-id subnet-034e836661d362946\
        --security-groups $security_group_id
    mount targetの困難な旅を確定する...
    
    echo $file_system_id         
    fs-4c6ad02c
    
     aws efs describe-mount-targets --file-system-id fs-4c6ad02c
    {
        "MountTargets": [
            {
                "MountTargetId": "fsmt-cec8b5af", 
                "VpcId": "vpc-0dfde63787164eaed", 
                "AvailabilityZoneId": "apne2-az1", 
                "NetworkInterfaceId": "eni-0f71d47acb3de43d9", 
                "AvailabilityZoneName": "ap-northeast-2a", 
                "FileSystemId": "fs-4c6ad02c", 
                "LifeCycleState": "available", 
                "SubnetId": "subnet-01f6009c85f598ad6", 
                "OwnerId": "970698899539", 
                "IpAddress": "192.168.7.96"
            }, 
            {
                "MountTargetId": "fsmt-dcc8b5bd", 
                "VpcId": "vpc-0dfde63787164eaed", 
                "AvailabilityZoneId": "apne2-az4", 
                "NetworkInterfaceId": "eni-0113b2069eb397b75", 
                "AvailabilityZoneName": "ap-northeast-2d", 
                "FileSystemId": "fs-4c6ad02c", 
                "LifeCycleState": "available", 
                "SubnetId": "subnet-0a9a0be5aa87f011f", 
                "OwnerId": "970698899539", 
                "IpAddress": "192.168.54.215"
            }, 
            {
                "MountTargetId": "fsmt-a0c8b5c1", 
                "VpcId": "vpc-0dfde63787164eaed", 
                "AvailabilityZoneId": "apne2-az3", 
                "NetworkInterfaceId": "eni-0d1ac4740fd4c7546", 
                "AvailabilityZoneName": "ap-northeast-2c", 
                "FileSystemId": "fs-4c6ad02c", 
                "LifeCycleState": "available", 
                "SubnetId": "subnet-034e836661d362946", 
                "OwnerId": "970698899539", 
                "IpAddress": "192.168.84.177"
            }
        ]
    }