View a markdown version of this page

Amazon Elastic Kubernetes Service EKS menyebarkan referensi tindakan - AWS CodePipeline

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

Amazon Elastic Kubernetes Service EKS menyebarkan referensi tindakan

Anda dapat menggunakan EKSDeploy tindakan untuk menyebarkan layanan Amazon EKS. Penerapan memerlukan file manifes Kubernetes yang digunakan untuk menye CodePipeline barkan gambar.

Sebelum Anda membuat pipeline, Anda harus telah membuat sumber daya Amazon EKS dan telah menyimpan gambar di repositori gambar Anda. Secara opsional, Anda dapat memberikan informasi VPC untuk cluster Anda.

penting

Tindakan ini menggunakan CodePipeline CodeBuild komputasi terkelola untuk menjalankan perintah di lingkungan build. Menjalankan tindakan perintah akan dikenakan biaya terpisah. AWS CodeBuild

catatan

T EKS indakan penerapan hanya tersedia untuk pipeline tipe V2.

Tindakan EKS mendukung klaster EKS publik dan swasta. Cluster pribadi adalah jenis yang direkomendasikan oleh EKS; Namun, kedua jenis didukung.

Tindakan EKS didukung untuk tindakan lintas akun. Untuk menambahkan tindakan EKS lintas akun, tambahkan actionRoleArn dari akun target Anda dalam deklarasi tindakan.

Tipe tindakan

  • Kategori: Deploy

  • Pemilik: AWS

  • Penyedia: EKS

  • Versi: 1

Parameter konfigurasi

ClusterName

Wajib: Ya

Cluster Amazon EKS di Amazon EKS.

Opsi di bawah Helm

Berikut ini adalah opsi yang tersedia ketika Helm adalah alat penerapan yang dipilih.

HelmReleaseName

Diperlukan: Ya (Diperlukan hanya untuk tipe Helm)

Nama rilis untuk penerapan Anda.

HelmChartLocation

Diperlukan: Ya (Diperlukan hanya untuk tipe Helm)

Lokasi bagan untuk penerapan Anda.

HelmValuesFiles

Diperlukan: Tidak (Opsional hanya untuk tipe Helm)

Untuk mengganti file nilai Helm, masukkan file nilai Helm yang dipisahkan koma di lokasi bagan Helm.

Opsi di bawah Kubectl

Berikut ini adalah opsi yang tersedia ketika Kubectl adalah alat penerapan yang dipilih.

ManifestFiles

Wajib: Ya (Diperlukan hanya untuk tipe Kubectl)

Nama file manifes Anda, file teks yang menjelaskan nama wadah layanan Anda dan gambar serta tag. Anda menggunakan file ini untuk membuat parameter URI gambar Anda dan informasi lainnya. Anda dapat menggunakan variabel lingkungan untuk tujuan ini.

Anda menyimpan file ini di repositori sumber untuk pipeline Anda.

Namespace

Wajib: Tidak

Namespace Kubernetes untuk digunakan dalam perintah atau. kubectl helm

Subnet

Wajib: Tidak

Subnet untuk VPC untuk cluster Anda. Ini adalah bagian dari VPC yang sama yang terpasang ke cluster Anda. Anda juga dapat menyediakan subnet yang belum terpasang ke cluster Anda dan tentukan mereka di sini.

SecurityGroupIds

Wajib: Tidak

Grup keamanan untuk VPC untuk cluster Anda. Ini adalah bagian dari VPC yang sama yang terpasang ke cluster Anda. Anda juga dapat menyediakan grup keamanan yang belum dilampirkan ke cluster Anda dan tentukan mereka di sini.

Artefak masukan

  • Jumlah artefak: 1

  • Deskripsi: Tindakan mencari file manifes Kubernetes atau bagan Helm di repositori file sumber untuk pipeline. Jika Anda ingin menggunakan grafik Helm dalam format.tgz yang disimpan dalam bucket S3, Anda dapat melakukannya dengan mengonfigurasi S3 Bucket/Key sebagai tindakan sumber Anda. Misalnya, kunci objek yang disediakan adalahmy-chart-0.1.0.tgz.

Artefak keluaran

  • Jumlah artefak: 0

  • Deskripsi: Artefak keluaran tidak berlaku untuk jenis tindakan ini.

Variabel lingkungan

Digunakan untuk mengganti variabel seperti repositori gambar atau tag gambar dalam file manifes atau file nilai bagan Helm.

Key

Kunci dalam pasangan variabel lingkungan kunci-nilai, seperti. $IMAGE_TAG

Nilai

Nilai untuk pasangan kunci-nilai, seperti. v1.0 Nilai dapat diparameterisasi dengan variabel keluaran dari tindakan pipeline atau variabel pipeline. Misalnya, pipeline dapat memiliki ECRBuildAndPublish tindakan yang membuat gambar ECR dengan${codepipeline.PipelineExecutionId}, dan tindakan EKS dapat menggunakan gambar ini ${codepipeline.PipelineExecutionId} sebagai nilai variabel lingkungan.

Variabel keluaran

EKSClusterName

Cluster Amazon EKS di Amazon EKS.

Izin kebijakan peran layanan

Untuk menjalankan tindakan ini, izin berikut harus tersedia dalam kebijakan peran layanan pipeline Anda.

  • Tindakan EC2: Saat CodePipeline menjalankan tindakan, izin instans EC2 diperlukan. Perhatikan bahwa ini tidak sama dengan peran instans EC2 yang diperlukan saat Anda membuat cluster EKS.

    Jika Anda menggunakan peran layanan yang ada, untuk menggunakan tindakan ini, Anda perlu menambahkan izin berikut untuk peran layanan.

    • ec2: CreateNetworkInterface

    • ec2: DescribeDhcpOptions

    • ec2: DescribeNetworkInterfaces

    • ec2: DeleteNetworkInterface

    • ec2: DescribeSubnets

    • ec2: DescribeSecurityGroups

    • ec2: DescribeVpcs

  • Tindakan EKS: Saat CodePipeline menjalankan tindakan, izin cluster EKS diperlukan. Perhatikan bahwa ini tidak sama dengan peran cluster IAM EKS yang diperlukan saat Anda membuat cluster EKS Anda.

    Jika Anda menggunakan peran layanan yang ada, untuk menggunakan tindakan ini, Anda perlu menambahkan izin berikut untuk peran layanan.

    • ex: DescribeCluster

  • Tindakan aliran log: Saat CodePipeline menjalankan CodePipeline tindakan, membuat grup log menggunakan nama pipeline sebagai berikut. Ini memungkinkan Anda untuk mengurangi izin untuk mencatat sumber daya menggunakan nama pipeline.

    /aws/codepipeline/MyPipelineName

    Jika Anda menggunakan peran layanan yang ada, untuk menggunakan tindakan ini, Anda perlu menambahkan izin berikut untuk peran layanan.

    • log: CreateLogGroup

    • log: CreateLogStream

    • log: PutLogEvents

Dalam pernyataan kebijakan peran layanan, turunkan izin ke tingkat sumber daya seperti yang ditunjukkan pada contoh berikut.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster" ], "Resource": "arn:aws:eks:*:111122223333:cluster/YOUR_CLUSTER_NAME" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME", "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*" ] } ] }

Untuk melihat log di konsol menggunakan halaman dialog detail tindakan, izin untuk melihat log harus ditambahkan ke peran konsol. Untuk informasi selengkapnya, lihat contoh kebijakan izin konsol diIzin diperlukan untuk melihat log komputasi di konsol.

Menambahkan peran layanan sebagai entri akses untuk cluster Anda

Setelah izin tersedia dalam kebijakan peran layanan pipeline Anda, Anda mengonfigurasi izin cluster dengan menambahkan peran CodePipeline layanan sebagai entri akses untuk cluster Anda.

Anda juga dapat menggunakan peran tindakan yang memiliki izin yang diperbarui. Untuk informasi lebih lanjut, lihat contoh tutorial diLangkah 4: Buat entri akses untuk peran CodePipeline layanan.

Deklarasi tindakan

YAML
Name: DeployEKS ActionTypeId: Category: Deploy Owner: AWS Provider: EKS Version: '1' RunOrder: 2 Configuration: ClusterName: my-eks-cluster ManifestFiles: ManifestFile.json OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact
JSON
{ "Name": "DeployECS", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "EKS", "Version": "1" }, "RunOrder": 2, "Configuration": { "ClusterName": "my-eks-cluster", "ManifestFiles": "ManifestFile.json" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ] },

Sumber daya terkait berikut dapat membantu Anda saat Anda mengerjakan tindakan ini.