Gunakan penyimpanan volume Kubernetes dengan Amazon EBS - Amazon EKS

View a markdown version of this page

Gunakan penyimpanan volume Kubernetes dengan Amazon EBS - Amazon EKS

Bantu meningkatkan 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 GitHub tautan Edit halaman ini di 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 volume Kubernetes dengan Amazon EBS

catatan

Baru: Mode Otomatis Amazon EKS mengotomatiskan tugas rutin untuk penyimpanan blok. Pelajari cara Menerapkan contoh beban kerja stateful ke Mode Otomatis EKS.

Driver Antarmuka Penyimpanan Kontainer (CSI) Amazon Elastic Block Store (Amazon EBS) mengelola siklus hidup volume Amazon EBS sebagai penyimpanan untuk Volume Kubernetes yang Anda buat. Driver Amazon EBS CSI membuat volume Amazon EBS untuk jenis volume Kubernetes ini: volume fana generik dan volume persisten. https://kubernetes.io/docs/concepts/storage/persistent-volumes/

Pertimbangan-pertimbangan

  • Anda tidak perlu menginstal pengontrol Amazon EBS CSI pada cluster Mode Otomatis EKS.

  • Anda tidak dapat memasang volume Amazon EBS ke Fargate Pod.

  • Anda dapat menjalankan pengontrol Amazon EBS CSI di node Fargate, tetapi node Amazon EBS CSI hanya DaemonSet dapat berjalan pada instans Amazon EC2.

  • Volume Amazon EBS dan driver Amazon EBS CSI tidak kompatibel dengan Amazon EKS Hybrid Nodes.

  • Dukungan akan diberikan untuk versi add-on terbaru dan satu versi sebelumnya. Perbaikan untuk bug atau kerentanan yang ditemukan di versi terbaru akan di-backport ke rilis sebelumnya sebagai versi minor baru.

  • Mode Otomatis EKS memerlukan kelas penyimpanan untuk digunakan ebs.csi.eks.amazonaws.com sebagai penyedianya. Standar Amazon EBS CSI Driver (ebs.csi.aws.com) mengelola volumenya sendiri secara terpisah. Untuk menggunakan volume yang ada dengan Mode Otomatis EKS, migrasikan volume menggunakan snapshot volume ke kelas penyimpanan yang menggunakan penyedia Mode Otomatis.

penting

Untuk menggunakan fungsionalitas snapshot driver Amazon EBS CSI, Anda harus menginstal pengontrol snapshot CSI terlebih dahulu. Untuk informasi selengkapnya, lihat Aktifkan fungsionalitas snapshot untuk volume CSI.

Prasyarat

  • Sebuah klaster yang sudah ada. Untuk melihat versi platform yang diperlukan, jalankan perintah berikut.

    aws eks describe-addon-versions --addon-name aws-ebs-csi-driver
  • Driver EBS CSI membutuhkan Izin AWS IAM.

Langkah 1: Buat peran IAM

Plugin Amazon EBS CSI memerlukan izin IAM untuk melakukan panggilan ke AWS API atas nama Anda. Jika Anda tidak melakukan langkah-langkah ini, mencoba menginstal add-on dan menjalankan kubectl describe pvc akan muncul failed to provision volume with StorageClass bersamaan dengan could not create volume in EC2: UnauthorizedOperation kesalahan. Untuk informasi selengkapnya, lihat Meng atur izin driver pada GitHub.

catatan

Pod akan memiliki akses ke izin yang ditetapkan ke peran IAM kecuali Anda memblokir akses ke IMDS. Untuk informasi selengkapnya, lihat Amankan kluster Amazon EKS dengan praktik terbaik.

Prosedur berikut menunjukkan cara membuat peran IAM dan melampirkan kebijakan terkel AWS ola ke dalamnya. Untuk menerapkan prosedur ini, Anda dapat menggunakan salah satu alat ini:

catatan

Anda dapat membuat kebijakan yang dikelola sendiri dengan izin cakupan lebih lanjut. Tinjau AmazonEBSCSIDriverPolicyV2 dan buat kebijakan IAM khusus dengan izin yang dikurangi. Jika bermigrasi dariAmazonEBSCSIDriverPolicy, lihat Migrasi kebijakan Driver EBS CSI.

catatan

Langkah-langkah spesifik dalam prosedur ini ditulis untuk menggunakan driver sebagai add-on Amazon EKS. Langkah yang berbeda diperlukan untuk menggunakan driver sebagai add-on yang dikelola sendiri. Untuk informasi selengkapnya, lihat Meng atur izin driver pada GitHub.

eksctl

  1. Buat peran IAM dan lampirkan kebijakan. AWS mempertahankan kebijakan AWS terkelola atau Anda dapat membuat kebijakan kustom Anda sendiri. Anda dapat membuat peran IAM dan melampirkan kebijakan ter AWS kelola dengan perintah berikut. Ganti my-cluster dengan nama klaster Anda. Perintah menyebarkan AWS CloudFormation tumpukan yang membuat peran IAM dan melampirkan kebijakan IAM padanya.

    eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKS_EBS_CSI_DriverRole \ --role-only \ --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicyV2 \ --approve
  2. Anda dapat melewati langkah ini jika Anda tidak menggunakan kunci https://aws.amazon.com/kms/ KMS khusus. Jika Anda menggunakannya untuk enkripsi pada volume Amazon EBS Anda, sesuaikan peran IAM sesuai kebutuhan. Sebagai contoh, lakukan hal berikut:

    1. Salin dan tempel kode berikut ke kms-key-for-encryption-on-ebs.json file baru. Ganti custom-key-arn dengan kunci KMS khusus AR N.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"] } ] }
    2. Buat kebijakan. Anda dapat KMS_Key_For_Encryption_On_EBS_Policy mengubah nama yang berbeda. Namun, jika Anda melakukannya, pastikan untuk mengubahnya di langkah selanjutnya juga.

      aws iam create-policy \ --policy-name KMS_Key_For_Encryption_On_EBS_Policy \ --policy-document file://kms-key-for-encryption-on-ebs.json
    3. Lampirkan kebijakan IAM ke peran dengan perintah berikut. Ganti 111122223333 dengan ID akun Anda.

      aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \ --role-name AmazonEKS_EBS_CSI_DriverRole

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. Di bagian Jenis entitas tepercaya, pilih Identitas web.

    2. Untuk penyedia Identitas, pilih URL penyedia OpenID Connect untuk cluster Anda (seperti yang ditunjukkan di bawah Ikhtis ar di Amazon EKS).

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

    4. Pilih Berikutnya.

  5. Pada halaman Tambah izin, lakukan hal berikut:

    1. Di dalam kotak Filter kebijakan, masukkan AmazonEBSCSIDriverPolicyV2.

    2. Pilih kotak centang di sebelah kiri yang AmazonEBSCSIDriverPolicyV2 dikembalikan dalam pencarian.

    3. Pilih Berikutnya.

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

    1. Untuk Nama Per an, masukkan nama unik untuk peran Anda, sepertiAmazonEKS_EBS_CSI_DriverRole.

    2. Di bawah Tambah tag (Opsional), tambahkan metadata ke peran dengan melampirkan tag sebagai pasangan kunci-nilai. 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, pilih peran di konsol untuk dibuka, dan kemudian diedit.

  8. Pilih tab Relasi kepercayaan, lalu pilih Edit kebijakan kepercayaan.

  9. Temukan garis yang terlihat mirip dengan baris berikut:

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

    Tambahkan koma ke akhir baris sebelumnya, lalu tambahkan baris berikut setelah 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:ebs-csi-controller-sa"
  10. Pilih Perbarui kebijakan untuk menyelesaikan.

  11. Jika Anda menggunakan kunci KMS khusus untuk enkripsi pada volume Amazon EBS Anda, sesuaikan peran IAM sesuai kebutuhan. Sebagai contoh, lakukan hal berikut:

    1. Di panel navigasi di sebelah kiri, pilih Kebijakan.

    2. Pada halaman Kebijakan, pilih Buat Kebijakan.

    3. Di halaman Buat kebijakan, pilih tab JSON.

    4. Salin dan tempel kode berikut ke editor, ganti custom-key-arn dengan kunci KMS khusus AR N.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"] } ] }
    5. Pilih Berikutnya: Tanda.

    6. Pada halaman Tambah tag (Opsional), pilih Ber ikutnya: Review.

    7. Untuk Nama, masukkan nama unik untuk kebijakan Anda (misalnya,KMS_Key_For_Encryption_On_EBS_Policy).

    8. Pilih Buat kebijakan.

    9. Di panel navigasi sebelah kiri, pilih Peran.

    10. Pilih AmazonEKS_EBS_CSI_DriverRole di konsol untuk membukanya untuk diedit.

    11. Dari daftar tar ik- turun Tambah izin, pilih Lamp irkan kebijakan.

    12. Di dalam kotak Filter kebijakan, masukkan KMS_Key_For_Encryption_On_EBS_Policy.

    13. Pilih kotak centang di sebelah kiri KMS_Key_For_Encryption_On_EBS_Policy yang dikembalikan dalam pencarian.

    14. Pilih Lampirkan kebijakan.

AWS CLI

  1. Lihat URL penyedia OIDC cluster Anda. Ganti my-cluster dengan nama klaster 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 peran IAM, berikan AssumeRoleWithWebIdentity tindakan.

    1. Salin konten berikut ke file yang diberi namaaws-ebs-csi-driver-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.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] }
    2. Buat peran. Anda dapat AmazonEKS_EBS_CSI_DriverRole mengubah nama yang berbeda. Jika Anda mengubahnya, pastikan untuk mengubahnya di langkah selanjutnya.

      aws iam create-role \ --role-name AmazonEKS_EBS_CSI_DriverRole \ --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy.json"
  3. Lampirkan kebijakan. AWS mempertahankan kebijakan AWS terkelola atau Anda dapat membuat kebijakan kustom Anda sendiri. Lampirkan AWS kebijakan terkelola ke peran dengan perintah berikut.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicyV2 \ --role-name AmazonEKS_EBS_CSI_DriverRole
  4. Jika Anda menggunakan kunci KMS khusus untuk enkripsi pada volume Amazon EBS Anda, sesuaikan peran IAM sesuai kebutuhan. Sebagai contoh, lakukan hal berikut:

    1. Salin dan tempel kode berikut ke kms-key-for-encryption-on-ebs.json file baru. Ganti custom-key-arn dengan kunci KMS khusus AR N.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"] } ] }
    2. Buat kebijakan. Anda dapat KMS_Key_For_Encryption_On_EBS_Policy mengubah nama yang berbeda. Namun, jika Anda melakukannya, pastikan untuk mengubahnya di langkah selanjutnya juga.

      aws iam create-policy \ --policy-name KMS_Key_For_Encryption_On_EBS_Policy \ --policy-document file://kms-key-for-encryption-on-ebs.json
    3. Lampirkan kebijakan IAM ke peran dengan perintah berikut. Ganti 111122223333 dengan ID akun Anda.

      aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \ --role-name AmazonEKS_EBS_CSI_DriverRole

Sekarang setelah Anda membuat peran IAM driver Amazon EBS CSI, Anda dapat melanjutkan ke bagian berikutnya. Saat Anda menerapkan add-on dengan peran IAM ini, add-on akan dibuat dan dikonfigurasi untuk menggunakan akun layanan yang diberi ebs-csi-controller-sa nama. Akun layanan terikat ke Kubernetes clusterrole yang diberi izin Kubernetes yang diperlukan.

Langkah 2: Dapatkan driver Amazon EBS CSI

Kami menyarankan Anda menginstal driver Amazon EBS CSI melalui add-on Amazon EKS untuk meningkatkan keamanan dan mengurangi jumlah pekerjaan. Untuk menambahkan add-on Amazon EKS ke cluster Anda, lihatBuat add-on Amazon EKS. Untuk informasi selengkapnya tentang add-on, lihatAdd-on Amazon EKS.

penting

Sebelum menambahkan driver Amazon EBS sebagai add-on Amazon EKS, konfirmasikan bahwa Anda tidak memiliki versi driver yang dikelola sendiri yang diinstal pada cluster Anda. Jika demikian, lihat Menco pot pemasangan driver Amazon EBS CSI yang dikelola sendiri. GitHub

catatan

Secara default, peran RBAC yang digunakan oleh EBS CSI memiliki izin untuk mengubah node untuk mendukung fitur penghapusan noda. Karena keterbatasan Kubernetes RBAC, ini juga memungkinkannya untuk mengubah Node lain di cluster. Bagan Helm memiliki parameter (node.serviceAccount.disableMutation) yang menonaktifkan izin RBAC Node yang bermutasi untuk akun layanan ebs-csi-node. Saat diaktifkan, fitur driver seperti penghapusan noda tidak akan berfungsi.

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

Langkah 3: Menyebarkan aplikasi sampel

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