View a markdown version of this page

Gunakan penyimpanan sistem file Amazon S3 dengan driver Amazon EFS CSI - Amazon EKS

Bantu tingkatkan halaman ini

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

Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.

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

Gunakan penyimpanan sistem file Amazon S3 dengan driver Amazon EFS CSI

File S3 adalah sistem file bersama yang menghubungkan AWS komputasi apa pun secara langsung dengan data Anda di Amazon S3. Ini menyediakan akses cepat dan langsung ke semua data S3 Anda sebagai file dengan semantik sistem file lengkap dan kinerja latensi rendah, tanpa data Anda pernah meninggalkan S3. Itu berarti aplikasi, agen, dan tim berbasis file dapat mengakses dan bekerja dengan data S3 sebagai sistem file menggunakan alat yang sudah mereka andalkan. Driver Amazon EFS Container Storage Interface (CSI) memungkinkan cluster Kubernetes berjalan untuk me-mount sistem file AWS Amazon S3 sebagai volume persisten mulai dari versi 3.0.0. Topik ini menunjukkan cara menggunakan driver Amazon EFS CSI untuk mengelola sistem file Amazon S3 di cluster Amazon EKS Anda.

Pertimbangan-pertimbangan

Prasyarat

  • Driver Amazon EFS CSI memerlukan izin AWS Identity and Access Management (IAM).

  • 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 seringkali merupakan beberapa versi di belakang versi terbaru CLI. AWS Untuk menginstal versi terbaru, lihat Menginstal dan Konfigurasi cepat dengan aws configure di Panduan Pengguna Antarmuka Baris AWS Perintah. Versi AWS CLI yang diinstal AWS CloudShell mungkin juga beberapa versi di belakang versi terbaru. Untuk memperbaruinya, lihat Menginstal AWS CLI ke direktori home Anda di AWS CloudShell Panduan Pengguna.

  • Alat baris kubectl perintah diinstal pada perangkat Anda atau AWS CloudShell. Versinya bisa sama dengan atau hingga satu versi minor lebih awal atau lebih lambat dari versi Kubernetes dari klaster 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 Mengatur kubectl dan eksctl.

Langkah 1: Buat peran IAM

Driver Amazon EFS CSI memerlukan izin IAM untuk berinteraksi dengan sistem file Anda. Driver EFS CSI menggunakan dua akun layanan dengan peran IAM terpisah:

  • efs-csi-controller-sa— digunakan oleh controller, membutuhkanAmazonS3FilesCSIDriverPolicy.

  • efs-csi-node-sa— digunakan oleh node daemonset, membutuhkan:

    • AmazonS3ReadOnlyAccess— memungkinkan streaming membaca langsung dari bucket S3 Anda untuk throughput yang lebih tinggi.

    • AmazonElasticFileSystemsUtils— memungkinkan penerbitan log efs-utils ke Amazon CloudWatch untuk visibilitas ke dalam operasi pemasangan dan pemecahan masalah yang lebih mudah.

catatan

Jika Anda ingin menggunakan sistem file Amazon S3 dan penyimpanan Amazon EFS, Anda harus melampirkan kebijakan AmazonS3FilesCSIDriverPolicy dan kebijakan AmazonEFSCSIDriverPolicy terkelola ke peran pengontrol. Untuk informasi selengkapnya tentang penyimpanan Amazon EFS, lihatGunakan penyimpanan sistem file elastis dengan Amazon EFS.

Untuk menerapkan prosedur ini, Anda dapat menggunakan salah satu alat ini:

catatan

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

eksctl

Jika menggunakan Identitas Pod

Jalankan perintah berikut untuk membuat peran IAM dan asosiasi Pod Identity denganeksctl. Ganti my-cluster dengan nilai Anda.

export cluster_name=my-cluster # Create the controller role eksctl create podidentityassociation \ --service-account-name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name AmazonEKS_EFS_CSI_ControllerRole \ --permission-policy-arns arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy # Create the node role eksctl create podidentityassociation \ --service-account-name efs-csi-node-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name AmazonEKS_EFS_CSI_NodeRole \ --permission-policy-arns arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess,arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils

Jika menggunakan peran IAM untuk akun layanan

Jalankan perintah berikut untuk membuat peran IAM denganeksctl. Ganti my-cluster dengan nama cluster Anda dan region-code dengan kode AWS Region Anda.

export cluster_name=my-cluster export region_code=region-code # Create the controller role export controller_role_name=AmazonEKS_EFS_CSI_ControllerRole eksctl create iamserviceaccount \ --name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $controller_role_name \ --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy \ --approve \ --region $region_code # Create the node role export node_role_name=AmazonEKS_EFS_CSI_NodeRole eksctl create iamserviceaccount \ --name efs-csi-node-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $node_role_name \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils \ --approve \ --region $region_code

Konsol Manajemen AWS

Jalankan berikut ini untuk membuat peran IAM dengan Konsol Manajemen AWS.

  1. Buka konsol IAM 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. Jika menggunakan Identitas Pod EKS:

      1. Di bagian Jenis entitas tepercaya, pilih AWS layanan.

      2. Dalam tarik-turun Layanan atau kasus penggunaan, pilih EKS.

      3. Di bagian Use case, pilih EKS - Pod Identity.

      4. Pilih Berikutnya.

    2. Jika menggunakan peran IAM untuk akun layanan:

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

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

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

      4. Pilih Berikutnya.

  5. Pada halaman Tambahkan izin, lakukan hal berikut:

    1. Di dalam kotak Filter kebijakan, masukkan AmazonS3FilesCSIDriverPolicy.

    2. Pilih kotak centang di sebelah kiri kebijakan yang ditampilkan 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, sepertiAmazonEKS_EFS_CSI_ControllerRole.

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

    3. Pilih Buat peran.

  7. Setelah peran dibuat:

    1. Jika menggunakan Identitas Pod EKS:

      1. Buka konsol Amazon EKS.

      2. Di panel navigasi kiri, pilih Clusters, lalu pilih nama cluster yang ingin Anda konfigurasikan untuk asosiasi EKS Pod Identity.

      3. Pilih tab Access.

      4. Dalam asosiasi Pod Identity, pilih Create.

      5. Pilih dropdown peran IAM dan pilih peran yang baru Anda buat.

      6. Pilih kolom namespace Kubernetes dan masukan. kube-system

      7. Pilih kolom akun layanan Kubernetes dan masukan. efs-csi-controller-sa

      8. Pilih Buat.

      9. Untuk informasi selengkapnya tentang membuat asosiasi Pod Identity, lihatMembuat asosiasi Pod Identity (AWS Console).

      10. Ulangi langkah-langkah di atas untuk membuat peran kedua untuk akun layanan node. Pada halaman Tambahkan izin, lampirkan AmazonS3ReadOnlyAccess dan AmazonElasticFileSystemsUtils sebagai gantinya. Kemudian buat sebuah asosiasi Pod Identity dengan efs-csi-node-sa bidang Service Account Kubernetes.

    2. Jika menggunakan peran IAM untuk akun layanan:

      1. Pilih peran untuk membukanya untuk diedit.

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

      3. 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 penyedia OIDC cluster Anda.

        "oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:sub": "system:serviceaccount:kube-system:efs-csi-controller-sa",
      4. Pilih Perbarui kebijakan untuk menyelesaikan.

      5. Ulangi langkah-langkah di atas untuk membuat peran kedua untuk akun layanan node. Pada halaman Tambahkan izin, lampirkan AmazonS3ReadOnlyAccess dan AmazonElasticFileSystemsUtils sebagai gantinya. Dalam kebijakan kepercayaan, gunakan efs-csi-node-sa untuk nilai :sub kondisi.

AWS CLI

Jalankan perintah berikut untuk membuat peran IAM dengan AWS CLI.

Jika menggunakan Identitas Pod

  1. Buat peran IAM yang memberikan AssumeRole dan TagSession tindakan ke layanan. pods.eks.amazonaws.com

    1. Salin isi berikut ke file bernama aws-efs-csi-driver-trust-policy-pod-identity.json.

      { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
    2. Buat peran. Ganti my-cluster dengan nama klaster Anda.

      export cluster_name=my-cluster export controller_role_name=AmazonEKS_EFS_CSI_ControllerRole aws iam create-role \ --role-name $controller_role_name \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy-pod-identity.json"
  2. Lampirkan kebijakan AWS terkelola yang diperlukan ke peran pengontrol.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy \ --role-name $controller_role_name
  3. Buat peran IAM node menggunakan kebijakan kepercayaan yang sama.

    export node_role_name=AmazonEKS_EFS_CSI_NodeRole aws iam create-role \ --role-name $node_role_name \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy-pod-identity.json"
  4. Lampirkan kebijakan AWS terkelola yang diperlukan ke peran node.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess \ --role-name $node_role_name aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils \ --role-name $node_role_name
  5. Jalankan perintah berikut untuk membuat asosiasi Pod Identity. Ganti <111122223333> dengan ID akun Anda.

    aws eks create-pod-identity-association --cluster-name $cluster_name --role-arn {arn-aws}iam::<111122223333>:role/$controller_role_name --namespace kube-system --service-account efs-csi-controller-sa
    aws eks create-pod-identity-association --cluster-name $cluster_name --role-arn {arn-aws}iam::<111122223333>:role/$node_role_name --namespace kube-system --service-account efs-csi-node-sa
  6. Untuk informasi selengkapnya tentang membuat asosiasi Pod Identity, lihatMembuat asosiasi Pod Identity (AWS Console).

Jika menggunakan peran IAM untuk akun layanan

  1. Lihat URL penyedia OIDC klaster Anda. Ganti my-cluster dengan nama klaster Anda.

    export cluster_name=my-cluster aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output text

    Contoh output adalah sebagai berikut.

    https://oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>

    Jika output dari perintah adalah None, tinjau Prasyarat.

  2. Buat peran IAM untuk akun layanan pengontrol.

    1. Salin isi berikut ke file bernama controller-trust-policy.json. Ganti <111122223333> dengan ID akun Anda. Ganti <EXAMPLED539D4633E53DE1B71EXAMPLE> dan <region-code> dengan nilai yang dikembalikan pada langkah sebelumnya.

      { "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": { "StringEquals": { "oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:aud": "sts.amazonaws.com", "oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:sub": "system:serviceaccount:kube-system:efs-csi-controller-sa" } } } ] }
    2. Buat peran.

      export controller_role_name=AmazonEKS_EFS_CSI_ControllerRole aws iam create-role \ --role-name $controller_role_name \ --assume-role-policy-document file://"controller-trust-policy.json"
  3. Lampirkan kebijakan AWS terkelola yang diperlukan ke peran pengontrol.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy \ --role-name $controller_role_name
  4. Buat peran IAM untuk akun layanan node.

    1. Salin isi berikut ke file bernama node-trust-policy.json. Ganti <111122223333> dengan ID akun Anda. Ganti <EXAMPLED539D4633E53DE1B71EXAMPLE> dan <region-code> dengan nilai yang dikembalikan pada langkah 1.

      { "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": { "StringEquals": { "oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:sub": "system:serviceaccount:kube-system:efs-csi-node-sa", "oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:aud": "sts.amazonaws.com" } } } ] }
    2. Buat peran.

      export node_role_name=AmazonEKS_EFS_CSI_NodeRole aws iam create-role \ --role-name $node_role_name \ --assume-role-policy-document file://"node-trust-policy.json"
  5. Lampirkan kebijakan AWS terkelola yang diperlukan ke peran node.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess \ --role-name $node_role_name aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils \ --role-name $node_role_name
catatan

AmazonS3ReadOnlyAccessKebijakan ini memberikan akses baca ke semua bucket S3. Untuk membatasi akses ke bucket tertentu, Anda dapat melepaskannya dan menggantinya dengan kebijakan inline berbasis tag. Lihat dokumentasi kebijakan IAM driver Amazon EFS CSI GitHub untuk detailnya.

Langkah 2: Dapatkan driver Amazon EFS CSI

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

penting

Sebelum menambahkan driver Amazon EFS sebagai add-on Amazon EKS, konfirmasikan bahwa Anda tidak memiliki versi driver yang dikelola sendiri yang diinstal di cluster Anda. Jika demikian, lihat Menghapus Instalasi Driver Amazon EFS CSI di. GitHub

Atau, jika Anda ingin instalasi yang dikelola sendiri dari driver Amazon EFS CSI, lihat Instalasi aktif. GitHub

Langkah 3: Buat sistem file Amazon S3

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

Langkah 4: Menyebarkan aplikasi sampel

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