Simpan sistem file elastis dengan Amazon EFS - Amazon EKS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Simpan sistem file elastis dengan Amazon EFS

Amazon Elastic File System (AmazonEFS) menyediakan penyimpanan file tanpa server dan sepenuhnya elastis sehingga Anda dapat berbagi data file tanpa menyediakan atau mengelola kapasitas dan kinerja penyimpanan. Driver Amazon EFS Container Storage Interface (CSI) menyediakan CSI antarmuka yang memungkinkan Kubernetes cluster berjalan AWS untuk mengelola siklus hidup sistem file AmazonEFS. Topik ini menunjukkan cara menerapkan EFS CSI driver Amazon ke EKS cluster Amazon Anda.

Pertimbangan

  • EFSCSIDriver Amazon tidak kompatibel dengan gambar kontainer berbasis Windows.

  • Anda tidak dapat menggunakan penyediaan dinamis untuk volume persisten dengan node Fargate, tetapi Anda dapat menggunakan penyediaan statis.

  • Penyediaan dinamis membutuhkan 1.2 atau lebih baru dari driver. Anda dapat menggunakan penyediaan statis untuk volume persisten menggunakan versi 1.1 driver pada versi EKS klaster Amazon yang didukung (lihatMemahami siklus hidup versi Kubernetes di EKS).

  • Versi 1.3.2 atau yang lebih baru dari driver ini mendukung arsitektur Arm64, termasuk instance berbasis Amazon EC2 Graviton.

  • Versi 1.4.2 atau yang lebih baru dari driver ini mendukung penggunaan FIPS untuk pemasangan sistem file.

  • Catat kuota sumber daya untuk AmazonEFS. Misalnya, ada kuota 1000 titik akses yang dapat dibuat untuk setiap sistem EFS file Amazon. Untuk informasi selengkapnya, lihat kuota EFS sumber daya Amazon yang tidak dapat Anda ubah.

  • Mulai versi 2.0.0, driver ini beralih dari menggunakan stunnel ke untuk efs-proxy koneksi. TLS Ketika efs-proxy digunakan, itu akan membuka sejumlah thread yang sama dengan satu ditambah jumlah core untuk node yang sedang berjalan.

Prasyarat

  • AWS Identity and Access Management yang sudah ada (IAM) OpenID Connect (OIDC) penyedia untuk cluster Anda. Untuk menentukan apakah Anda sudah memiliki satu, atau harus membuat satu, lihat Buat sebuah IAM OIDC penyedia untuk klaster Anda.

  • Versi 2.12.3 atau yang lebih baru atau versi 1.27.160 atau yang lebih baru dari AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi pada perangkat Anda atau AWS CloudShell. Untuk memeriksa versi Anda saat ini, gunakanaws --version | cut -d / -f2 | cut -d ' ' -f1. Package manager sepertiyum,apt-get, atau Homebrew untuk macOS sering beberapa versi di belakang versi terbaru dari AWS CLI. Untuk menginstal versi terbaru, lihat Menginstal dan Konfigurasi cepat dengan aws configure di Panduan Pengguna Antarmuka Baris AWS Perintah. AWS CLIVersi yang diinstal AWS CloudShell mungkin juga beberapa versi di belakang versi terbaru. Untuk memperbaruinya, lihat Menginstal AWS CLI ke direktori home Anda di Panduan AWS CloudShell Pengguna.

  • Alat baris kubectl perintah diinstal pada perangkat Anda atau AWS CloudShell. Versi ini bisa sama dengan atau hingga satu versi minor lebih awal atau lebih lambat dari Kubernetes versi cluster Anda. Misalnya, jika versi cluster Anda1.29, Anda dapat menggunakan kubectl versi1.28,1.29, atau 1.30 dengan itu. Untuk menginstal atau memutakhirkan kubectl, lihat Siapkan kubectl dan eksctl.

Langkah 1: Buat IAM peran

EFSCSIDriver Amazon memerlukan IAM izin untuk berinteraksi dengan sistem file Anda. Buat IAM peran dan lampirkan kebijakan AWS terkelola yang diperlukan padanya. Untuk menerapkan prosedur ini, Anda dapat menggunakan salah satu alat ini:

catatan

Langkah-langkah spesifik dalam prosedur ini ditulis untuk menggunakan driver sebagai EKS add-on Amazon. Untuk detail tentang instalasi yang dikelola sendiri, lihat Mengatur izin driver di GitHub.

eksctl

Jalankan perintah berikut untuk membuat IAM peran denganeksctl. Ganti my-cluster dengan nama cluster Anda dan AmazonEKS_EFS_CSI_DriverRole dengan nama untuk peran Anda.

export cluster_name=my-cluster export role_name=AmazonEKS_EFS_CSI_DriverRole eksctl create iamserviceaccount \ --name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $role_name \ --role-only \ --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --approve TRUST_POLICY=$(aws iam get-role --role-name $role_name --query 'Role.AssumeRolePolicyDocument' | \ sed -e 's/efs-csi-controller-sa/efs-csi-*/' -e 's/StringEquals/StringLike/') aws iam update-assume-role-policy --role-name $role_name --policy-document "$TRUST_POLICY"

AWS Management Console

Jalankan yang berikut ini untuk membuat IAM peran dengan AWS Management Console.

  1. Buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi sebelah kiri, pilih Peran.

  3. Pada halaman Peran, pilih Buat peran.

  4. Pada halaman Pilih entitas tepercaya, lakukan hal berikut:

    1. Di bagian Jenis entitas tepercaya, pilih Identitas web.

    2. Untuk penyedia Identitas, pilih OpenID Connect penyedia URL untuk klaster Anda (seperti yang ditunjukkan di bawah Ikhtisar di AmazonEKS).

    3. Untuk Audiens, pilih sts.amazonaws.com.

    4. Pilih Berikutnya.

  5. Pada halaman Tambahkan izin, lakukan hal berikut:

    1. Di kotak Filter kebijakan, masukkan AmazonEFSCSIDriverPolicy.

    2. Pilih kotak centang di sebelah kiri AmazonEFSCSIDriverPolicy kembali dalam pencarian.

    3. Pilih Berikutnya.

  6. Pada halaman Nama, tinjau, dan buat, lakukan hal berikut:

    1. Untuk nama Peran, masukkan nama unik untuk peran Anda, seperti AmazonEKS_EFS_CSI_DriverRole.

    2. Di bawah Tambahkan tag (Opsional), tambahkan metadata ke peran dengan melampirkan tag sebagai pasangan nilai kunci. Untuk informasi selengkapnya tentang penggunaan tag diIAM, lihat Menandai IAM sumber daya di Panduan IAM Pengguna.

    3. Pilih Buat peran.

  7. Setelah peran dibuat, pilih peran di konsol untuk dibuka, dan kemudian diedit.

  8. Pilih tab Trust relationship, lalu pilih Edit trust policy.

  9. Temukan garis yang terlihat mirip dengan baris berikut:

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"

    Tambahkan baris berikut di atas baris sebelumnya. Ganti region-code dengan AWS Wilayah tempat cluster Anda berada. Ganti EXAMPLED539D4633E53DE1B71EXAMPLE dengan ID OIDC penyedia klaster Anda.

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*",
  10. Ubah Condition operator dari "StringEquals" ke"StringLike".

  11. Pilih Perbarui kebijakan untuk menyelesaikan.

AWS CLI

Jalankan perintah berikut untuk membuat IAM peran dengan AWS CLI.

  1. Lihat OIDC penyedia klaster AndaURL. Ganti my-cluster dengan nama cluster Anda. Jika output dari perintah adalah None, tinjau Prasyarat.

    aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text

    Contoh output adalah sebagai berikut.

    https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
  2. Buat IAM peran yang memberikan AssumeRoleWithWebIdentity tindakan.

    1. Salin konten berikut ke file bernama aws-efs-csi-driver-trust-policy.json``. Ganti 111122223333 dengan ID akun Anda. Ganti EXAMPLED539D4633E53DE1B71EXAMPLE and region-code dengan nilai yang dikembalikan pada langkah sebelumnya. Jika cluster Anda berada di AWS Wilayah AWS GovCloud (AS-Timur) atau AWS GovCloud (AS-Barat), maka ganti arn:aws: dengan. arn:aws-us-gov:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws: iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
    2. Buat peran. Anda bisa berubah AmazonEKS_EFS_CSI_DriverRole ke nama yang berbeda, tetapi jika Anda melakukannya, pastikan untuk mengubahnya di langkah selanjutnya juga.

      aws iam create-role \ --role-name AmazonEKS_EFS_CSI_DriverRole \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy.json"
  3. Lampirkan kebijakan AWS terkelola yang diperlukan ke peran dengan perintah berikut. Jika cluster Anda berada di AWS Wilayah AWS GovCloud (AS-Timur) atau AWS GovCloud (AS-Barat), maka ganti arn:aws: dengan. arn:aws-us-gov:

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --role-name AmazonEKS_EFS_CSI_DriverRole

Langkah 2: Dapatkan EFS CSI driver Amazon

Kami menyarankan Anda menginstal EFS CSI driver Amazon melalui EKS add-on Amazon. Untuk menambahkan EKS add-on Amazon ke cluster Anda, lihatBuat EKS add-on Amazon. Untuk informasi selengkapnya tentang add-on, lihatEKSPengaya Amazon. Jika Anda tidak dapat menggunakan EKS add-on Amazon, kami menyarankan Anda untuk mengirimkan masalah tentang mengapa Anda tidak dapat ke repositori peta jalan GitHub Kontainer.

Atau, jika Anda menginginkan penginstalan EFS CSI driver Amazon yang dikelola sendiri, lihat Instalasi di GitHub.

Langkah 3: Buat sistem EFS file Amazon

catatan

Langkah ini tidak diperlukan untuk AWS Fargate. A Pod berjalan di Fargate secara otomatis memasang sistem EFS file Amazon, tanpa memerlukan langkah instalasi driver manual.

Untuk membuat sistem EFS file Amazon, lihat Membuat sistem EFS file Amazon untuk EKS Amazon GitHub.

Langkah 4: Menyebarkan aplikasi sampel

Anda dapat menerapkan berbagai contoh aplikasi dan memodifikasinya sesuai kebutuhan. Untuk informasi selengkapnya, lihat Contoh di GitHub.