View a markdown version of this page

AWSSupport-TroubleshootEKSALBControllerIssues - AWS Systems Manager Referensi Runbook Otomasi

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

AWSSupport-TroubleshootEKSALBControllerIssues

Deskripsi

Runbook AWSSupport-TroubleshootEKSALBControllerIssues otomatisasi membantu mendiagnosis masalah umum yang mencegah Load Balancer Controller menyediakan dan mengelola Application Load Balancer (ALB) dan Network Load Balancer (NLB) dengan benar untuk input dan layanan Kubernetes. AWS

Runbook ini melakukan validasi ujung ke ujung komponen penting termasuk pengaturan penyedia identitas OIDC, konfigurasi IRSA, prasyarat jaringan, ingress/service konfigurasi, dan kuota sumber daya. Ini juga menangkap log pengontrol dan konfigurasi sumber daya Kubernetes yang relevan untuk membantu mengidentifikasi kesalahan konfigurasi atau masalah operasional.

penting

Runbook otomatisasi ini dirancang untuk cluster Amazon EKS menggunakan grup simpul Amazon Elastic Compute Cloud (Amazon EC2) dan saat ini tidak mendukung cluster yang berjalan. AWS Fargate

Bagaimana cara kerjanya?

Runbook AWSSupport-TroubleshootEKSALBControllerIssues melakukan langkah-langkah tingkat tinggi berikut:

  • Memvalidasi status cluster Amazon EKS, konfigurasi entri akses, dan pengaturan penyedia OIDC.

  • Membuat proxy Lambda sementara untuk komunikasi API Kubernetes.

  • Memer AWS iksa penyebaran Load Balancer Controller dan konfigurasi akun layanan.

  • Memverifikasi webhook identitas pod dan injeksi peran IAM.

  • Memvalidasi konfigurasi subnet dan penandaan untuk penyediaan Application Load Balancer dan Network Load Balancer.

  • Memeriksa kuota akun Application Load Balancer dan Network Load Balancer terhadap penggunaan saat ini.

  • Memvalidasi anotasi sumber daya masuk dan layanan.

  • Memeriksa penandaan grup keamanan node pekerja untuk integrasi penyeimbang beban.

  • Mengumpulkan log pod pengontrol untuk diagnostik.

  • Membersihkan sumber daya otentikasi sementara.

  • Menghasilkan laporan diagnostik dengan temuan dan langkah-langkah remediasi.

catatan
  • Cluster Amazon EKS harus memiliki entri akses yang dikonfigurasi untuk entitas IAM yang menjalankan otomatisasi ini. Mode otentikasi cluster harus diatur ke salah satu API atauAPI_AND_CONFIG_MAP. Tanpa konfigurasi entri akses yang tepat, otomatisasi akan berakhir selama validasi awal.

  • LambdaRoleArnParameter diperlukan dan harus memiliki kebijakan terkel AWS ola AWSLambdaBasicExecutionRole dan dil AWSLambdaVPCAccessExecutionRole ampirkan untuk memungkinkan fungsi proxy berkomunikasi dengan API Kubernetes.

  • Lo AWS ad Balancer Controller harus versi v2.1.1 atau yang lebih baru.

  • Otomatisasi mencakup langkah pembersihan yang menghapus sumber daya infrastruktur otentikasi sementara. Langkah pembersihan ini berjalan bahkan ketika langkah sebelumnya gagal, memastikan tidak ada sumber daya yatim piatu yang tersisa di akun Anda AWS .

Jalankan Otomatisasi ini (konsol)

Jenis dokumen

Otomatisasi

Pemilik

Amazon

Platform

/

Izin IAM yang diperlukan

AutomationAssumeRoleParameter memerlukan tindakan berikut untuk menggunakan runbook dengan sukses.

  • cloudformation:CreateStack

  • cloudformation:DeleteStack

  • cloudformation:DescribeStacks

  • cloudformation:UpdateStack

  • ec2:CreateNetworkInterface

  • ec2:DeleteNetworkInterface

  • ec2:DescribeInstances

  • ec2:DescribeNetworkInterfaces

  • ec2:DescribeRouteTables

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSubnets

  • ec2:DescribeVpcs

  • eks:DescribeCluster

  • eks:ListAssociatedAccessPolicies

  • elasticloadbalancing:DescribeAccountLimits

  • elasticloadbalancing:DescribeLoadBalancers

  • iam:GetRole

  • iam:ListOpenIDConnectProviders

  • iam:PassRole

  • lambda:CreateFunction

  • lambda:DeleteFunction

  • lambda:GetFunction

  • lambda:InvokeFunction

  • lambda:ListTags

  • lambda:TagResource

  • lambda:UntagResource

  • lambda:UpdateFunctionCode

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DescribeLogGroups

  • logs:DescribeLogStreams

  • logs:ListTagsForResource

  • logs:PutLogEvents

  • logs:PutRetentionPolicy

  • logs:TagResource

  • logs:UntagResource

  • ssm:DescribeAutomationExecutions

  • ssm:GetAutomationExecution

  • ssm:StartAutomationExecution

  • tag:GetResources

  • tag:TagResources

Instruksi

Ikuti langkah-langkah ini untuk mengkonfigurasi dan menjalankan otomatisasi:

catatan

Sebelum menjalankan otomatisasi, ikuti langkah-langkah ini untuk mengonfigurasi peran IAM yang diperlukan: satu untuk Otomasi Manajer Sistem untuk menjalankan runbook, dan satu lagi untuk Lambda untuk berkomunikasi dengan API Kubernetes:

  1. Buat peran otomatisasi SSM TroubleshootEKSALBController-SSM-Role di akun Anda. Verifikasi bahwa hubungan kepercayaan berisi kebijakan berikut.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Lampirkan kebijakan IAM berikut untuk memberikan izin yang diperlukan:

    { "Version": "2012-10-17", "Statement": [{ "Sid": "TroubleshootEKSALBControllerIssuesActions", "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListAssociatedAccessPolicies", "iam:GetRole", "iam:ListOpenIDConnectProviders", "ssm:StartAutomationExecution", "ssm:GetAutomationExecution", "ssm:DescribeAutomationExecutions", "ec2:DescribeSubnets", "ec2:DescribeRouteTables", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeAccountLimits", "ec2:DescribeInstances", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Sid": "SetupK8sApiProxyForEKSActions", "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStacks", "cloudformation:UpdateStack", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "eks:DescribeCluster", "iam:GetRole", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:InvokeFunction", "lambda:ListTags", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionCode", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:ListTagsForResource", "logs:PutLogEvents", "logs:PutRetentionPolicy", "logs:TagResource", "logs:UntagResource", "ssm:DescribeAutomationExecutions", "tag:GetResources", "tag:TagResources" ], "Resource": "*" }, { "Sid": "PassRoleToAutomation", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringLikeIfExists": { "iam:PassedToService": [ "lambda.amazonaws.com", "ssm.amazonaws.com" ] } } }] }
  3. Konfigurasikan entri akses untuk cluster Amazon EKS Anda. Ini adalah persyaratan wajib untuk otomatisasi. Untuk langkah-langkah mengonfigurasi mode otentikasi untuk entri akses, lihat Menyiapkan entri akses.

    Di konsol Amazon EKS, navigasikan ke cluster Anda dan ikuti langkah-langkah berikut:

    • Di bawah bagian Akses, verifikasi konfigurasi otentikasi Anda disetel ke salah API satu atauAPI_AND_CONFIG_MAP.

    • Pilih Buat entri akses dan konfigurasikan:

      • Untuk ARN utama IAM, pilih peran IAM yang Anda buat ()TroubleshootEKSALBController-SSM-Role.

      • Untuk Jenis, pilihStandard.

    • Tambahkan kebijakan akses:

      • Untuk Nama kebijakan, pilihAmazonEKSAdminViewPolicy.

      • Untuk cakupan akses, pilihCluster.

    • Pilih Tambahkan kebijakan.

    • Verifikasi detailnya dan pilih Buat.

  4. Buat peran IAM untuk fungsi Lambda (direferensikan seperti LambdaRoleArn pada parameter input):

    • Buat peran IAM baru dengan kebijakan kepercayaan berikut:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    • Lampirkan kebijakan ter AWS kelola berikut ke peran ini:

      • AWSLambdaBasicExecutionRole

      • AWSLambdaVPCAccessExecutionRole

    • Perhatikan ARN peran ini karena Anda akan membutuhkannya untuk parameter LambdaRoleArn input.

  1. Arahkan ke AWSSupport-TroubleshootEKSALBControllerIssues dalam konsol Manajer AWS Sistem.

  2. Pilih Eksekusi otomatisasi.

  3. Untuk parameter input masukkan yang berikut ini:

    • AutomationAssumeRole (Opsional):

      Jenis: AWS: :IAM: :Peran: :Arn

      Deskripsi: (Opsional) Nama Sumber Daya Amazon (ARN) dari peran AWS Identity and Access Management (IAM) yang memungkinkan Otomasi Manajer Sistem untuk melakukan tindakan atas nama Anda. Jika tidak ada peran yang ditentukan, Sistem Manajer Otomasi menggunakan izin pengguna yang memulai runbook ini.

      Pola yang Diizinkan: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :role/? [a-z A-Z _0-9+=, .@\ -_/] +$

    • EksClusterName (Diperlukan):

      Tipe: String

      Deskripsi: (Diperlukan) Nama cluster Amazon Elastic Kubernetes Service (Amazon EKS).

      Pola yang Diizinkan: ^ [0-9A-Za-z] [A-Za-z0-9-_] {0,99} $

    • ALBControllerDeploymentName (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Nama penerapan AWS Load Balancer Controller di cluster Amazon EKS Anda. Ini biasanya 'aws-load-balancer-controller' kecuali Anda telah menyesuaikannya selama instalasi.

      Pola yang Diizinkan: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $

      Standar: aws-load-balancer-controller

    • ALBControllerNamespace (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Namespace Kubernetes tempat Load Balancer Controller AWS digunakan. Secara default, ini adalah 'kube-system', tetapi mungkin berbeda jika Anda telah menginstal pengontrol di namespace khusus.

      Pola yang Diizinkan: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $

      Standar: sistem kubus

    • ServiceAccountName (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Nama Akun Layanan Kubernetes yang terkait dengan AWS Load Balancer Controller. Ini biasanya 'aws-load-balancer-controller' kecuali disesuaikan selama instalasi.

      Pola yang Diizinkan: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $

      Standar: aws-load-balancer-controller

    • ServiceAccountNamespace (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Namespace Kubernetes tempat Akun Layanan untuk Load Balancer Controller AWS berada. Ini biasanya 'kube-system', tetapi mungkin berbeda jika Anda telah menggunakan namespace khusus.

      Pola yang Diizinkan: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $

      Standar: sistem kubus

    • IngressName (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Nama sumber daya Ingress yang akan divalidasi (Application Load Balancer). Jika tidak ditentukan, validasi Ingress akan dilewati.

      Pola yang Diizinkan: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $

      Default: “” (string kosong)

    • IngressNamespace (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Namespace sumber daya Ingress. Diperlukan IngressName jika ditentukan.

      Pola yang Diizinkan: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $

      Default: “” (string kosong)

    • ServiceName (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Nama sumber daya Layanan tertentu untuk memvalidasi anotasi Network Load Balancer (Network Load Balancer). Jika tidak ditentukan, validasi sumber daya layanan akan dilewati.

      Pola yang Diizinkan: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $

      Default: “” (string kosong)

    • ServiceNamespace (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Namespace sumber daya Layanan. Diperlukan ServiceName jika ditentukan.

      Pola yang Diizinkan: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $

      Default: “” (string kosong)

    • LambdaRoleArn (Diperlukan):

      Jenis: AWS: :IAM: :Peran: :Arn

      Deskripsi: (Diperlukan) ARN dari peran IAM yang memungkinkan fungsi AWS Lambda (Lambda) untuk mengakses AWS layanan dan sumber daya yang diperlukan. Kaitkan kebijakan AWS terkelola: AWSLambdaBasicExecutionRole dan AWSLambdaVPCAccessExecutionRole ke peran IAM eksekusi fungsi lambda Anda.

      Pola yang Diizinkan: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :role/? [a-z A-Z _0-9+=, .@\ -_/] +$

  4. Pilih Eksekusi.

  5. Otomatisasi dimulai.

  6. Dokumen melakukan langkah-langkah berikut:

    1. ValidateAccessEntryAndOIDCProvider:

      Memvalidasi pengaturan IAM cluster Amazon EKS dengan memeriksa izin entri akses dan konfigurasi penyedia OIDC.

    2. SetupK8sAuthenticationClient:

      Jalankan Dokumen SAW AWSSupport-SetupK8sApiProxyForEKS untuk mengatur fungsi lambda untuk menjalankan panggilan API Amazon EKS pada cluster.

    3. VerifyALBControllerAndIRSASetup:

      Memeriksa apakah pengontrol Service Account & Application Load Balancer yang diberikan ada di ruang nama masing-masing. Juga memeriksa kebijakan Anotasi & Kepercayaan Peran Akun Layanan pengontrol Penyeimbang Beban Aplikasi.

    4. VerifyPodIdentityWebhookAndEnv:

      Memeriksa apakah pod-identity-webhook sedang berjalan. Juga memeriksa apakah IRSA disuntikkan ke dalam variabel ENV pod.

    5. ValidateSubnetRequirements:

      Periksa setidaknya dua subnet di dua AZ dengan 8 IP yang tersedia, penandaan subnet yang tepat ada untuk public/private penyeimbang beban.

    6. CheckLoadBalancerLimitsAndUsage:

      Bandingkan batas akun dengan jumlah Application Load Balancer dan Network Load Balancer.

    7. CheckIngressOrServiceAnnotations:

      Memeriksa anotasi dan spesifikasi yang benar di sumber daya Ingress dan Layanan untuk memastikan mereka dikonfigurasi dengan benar untuk penggunaan Application Load Balancer dan Network Load Balancer.

    8. CheckWorkerNodeSecurityGroupTags:

      Verifikasi bahwa tepat satu grup keamanan yang dilampirkan ke node pekerja memiliki tag cluster yang diperlukan.

    9. CaptureALBControllerLogs:

      Mengambil log diagnostik terbaru dari pod AWS Load Balancer Controller yang berjalan di cluster Amazon EKS.

    10. CleanupK8sAuthenticationClient:

      Mengeksekusi Dokumen SAW 'AWSSupport-SetupK8sApiProxyForEKS' menggunakan operasi 'Cleanup' untuk membersihkan sumber daya yang dibuat sebagai bagian dari otomatisasi.

    11. GenerateReport:

      Menghasilkan laporan otomatisasi.

  7. Setelah eksekusi selesai, tinjau bagian Output untuk hasil terperinci dari eksekusi:

    1. Laporkan:

      Menyediakan ringkasan komprehensif dari semua pemeriksaan yang dilakukan, termasuk status cluster Amazon EKS, pengaturan Pengontrol Penyeimbang Beban Aplikasi, konfigurasi IRSA, persyaratan subnet, batas penyeimbang beban, ingress/service anotasi, tag grup keamanan node pekerja, dan log Pengontrol Penyeimbang Beban Aplikasi. Ini juga mencakup masalah yang diidentifikasi dan langkah-langkah remediasi yang direkomendasikan.

Referensi

Otomatisasi Systems Manager

Dokumentasi terkait AWS Load Balancer Controller