Konfigurasikan akses repositori - 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.

Konfigurasikan akses repositori

Sebelum menerapkan aplikasi, konfigurasikan Argo CD untuk mengakses repositori Git dan registrasi bagan Helm Anda. Argo CD mendukung beberapa metode otentikasi untuk GitHub, Bitbucket GitLab,, dan ECR. AWS CodeCommit AWS

catatan

Untuk integrasi AWS layanan langsung (bagan Helm ECR, CodeCommit repositori, dan CodeConnections), Anda dapat mereferensikannya secara langsung di sumber daya Aplikasi tanpa membuat konfigurasi Repositori. Peran Kemampuan harus memiliki izin IAM yang diperlukan. Lihat Konfigurasikan izin Argo CD untuk detail.

Prasyarat

  • Cluster EKS dengan kemampuan Argo CD dibuat

  • Repositori Git yang berisi manifes Kubernetes

  • kubectldikonfigurasi untuk berkomunikasi dengan cluster Anda

catatan

AWS CodeConnections dapat terhubung ke server Git yang berada di AWS Cloud atau lokal. Untuk informasi selengkapnya, lihat AWS CodeConnections.

Metode otentikasi

Metode Kasus Penggunaan Izin IAM Diperlukan

Integrasi langsung dengan AWS layanan

CodeCommit

Integrasi langsung dengan AWS CodeCommit repositori Git. Tidak diperlukan konfigurasi Repositori.

codecommit:GitPull

CodeConnections

Connect to GitHub, GitLab, atau Bitbucket dengan autentikasi terkelola. Membutuhkan pengaturan koneksi.

codeconnections:UseConnection

Artefak ECR OCI

Integrasi langsung dengan AWS ECR untuk bagan Helm OCI dan gambar manifes. Tidak diperlukan konfigurasi Repositori.

arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly

Konfigurasi repositori dengan kredensional

AWS Secrets Manager (Nama Pengguna/Token)

Simpan token atau kata sandi akses pribadi. Mengaktifkan rotasi kredenal tanpa akses Kubernetes.

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

AWS Secrets Manager (Kunci SSH)

Gunakan otentikasi kunci SSH. Mengaktifkan rotasi kredenal tanpa akses Kubernetes.

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

AWS Secrets Manager (GitHub Aplikasi)

GitHub Otentikasi aplikasi dengan kunci pribadi. Mengaktifkan rotasi kredenal tanpa akses Kubernetes.

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

Rahasia Kubernetes

Metode CD Argo standar menggunakan rahasia in-cluster

Tidak ada (izin ditangani oleh EKS Access Entry dengan Kubernetes RBAC)

Akses langsung ke AWS layanan

Untuk AWS layanan, Anda dapat mereferensikannya secara langsung di sumber daya Aplikasi tanpa membuat konfigurasi Repositori. Peran Kemampuan harus memiliki izin IAM yang diperlukan.

CodeCommit repositori

CodeCommit Repositori referensi langsung di Aplikasi:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name targetRevision: main path: kubernetes/manifests

Izin Peran Kemampuan yang Diperlukan:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codecommit:GitPull", "Resource": "arn:aws:codecommit:region:account-id:repository-name" } ] }

CodeConnections

Referensi GitHub, GitLab, atau repositori Bitbucket melalui. CodeConnections Format URL repositori berasal dari koneksi CodeConnections ARN.

Format URL repositori adalah:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: source: repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git targetRevision: main path: kubernetes/manifests

Izin Peran Kemampuan yang Diperlukan:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codeconnections:UseConnection", "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id" } ] }

Grafik ECR Helm

ECR menyimpan bagan Helm sebagai artefak OCI. Argo CD mendukung dua cara untuk mereferensikannya:

Format helm (direkomendasikan untuk bagan Helm):

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-helm namespace: argocd spec: source: repoURL: account-id.dkr.ecr.region.amazonaws.com/repository-name targetRevision: chart-version chart: chart-name helm: valueFiles: - values.yaml

Catatan: Jangan sertakan oci:// awalan saat menggunakan format Helm. Gunakan chart bidang untuk menentukan nama bagan.

Format OCI (untuk artefak OCI dengan manifes Kubernetes):

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-oci namespace: argocd spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name targetRevision: artifact-version path: path-to-manifests

Catatan: Sertakan oci:// awalan saat menggunakan format OCI. Gunakan path bidang sebagai gantichart.

Izin Peran Kemampuan yang Diperlukan - lampirkan kebijakan terkelola:

arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly

Kebijakan ini mencakup izin ECR yang diperlukan:ecr:GetAuthorizationToken,ecr:BatchGetImage, dan. ecr:GetDownloadUrlForLayer

Menggunakan AWS Secrets Manager

Simpan kredensyal repositori di Secrets Manager dan referensikan mereka dalam konfigurasi Argo CD Repository. Menggunakan Secrets Manager memungkinkan rotasi kredenal otomatis tanpa memerlukan akses Kubernetes RBAC — kredensyal dapat diputar menggunakan izin IAM ke Secrets Manager, dan Argo CD secara otomatis membaca nilai yang diperbarui.

catatan

Untuk penggunaan kembali kredensyal di beberapa repositori (misalnya, semua repositori di bawah GitHub organisasi), gunakan templat kredensyal repositori dengan. argocd.argoproj.io/secret-type: repo-creds Ini memberikan UX yang lebih baik daripada membuat rahasia repositori individu. Untuk informasi selengkapnya, lihat Kredensial Repositori dalam dokumentasi Argo CD.

Otentikasi nama pengguna dan token

Untuk repositori HTTPS dengan token atau kata sandi akses pribadi:

Buat rahasia di Secrets Manager:

aws secretsmanager create-secret \ --name argocd/my-repo \ --description "GitHub credentials for Argo CD" \ --secret-string '{"username":"your-username","token":"your-personal-access-token"}'

Bidang sertifikat klien TLS opsional (untuk server Git pribadi):

aws secretsmanager create-secret \ --name argocd/my-private-repo \ --secret-string '{ "username":"your-username", "token":"your-token", "tlsClientCertData":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi4uLgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t", "tlsClientCertKey":"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t" }'
catatan

tlsClientCertKeyNilai tlsClientCertData dan harus dikodekan base64.

Buat Rahasia Repositori yang mereferensikan Secrets Manager:

apiVersion: v1 kind: Secret metadata: name: my-repo namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: https://github.com/your-org/your-repo secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-AbCdEf project: default

Otentikasi kunci SSH

Untuk akses Git berbasis SSH, simpan kunci pribadi sebagai plaintext (bukan JSON):

Buat rahasia dengan kunci pribadi SSH:

aws secretsmanager create-secret \ --name argocd/my-repo-ssh \ --description "SSH key for Argo CD" \ --secret-string "-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn ... -----END OPENSSH PRIVATE KEY-----"

Buat Rahasia Repositori untuk SSH:

apiVersion: v1 kind: Secret metadata: name: my-repo-ssh namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: git@github.com:your-org/your-repo.git secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-ssh-AbCdEf project: default

GitHub Otentikasi aplikasi

Untuk otentikasi GitHub Aplikasi dengan kunci pribadi:

Buat rahasia dengan kredensyal GitHub Aplikasi:

aws secretsmanager create-secret \ --name argocd/github-app \ --description "GitHub App credentials for Argo CD" \ --secret-string '{ "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=", "githubAppID":"123456", "githubAppInstallationID":"12345678" }'
catatan

githubAppPrivateKeySecretNilai harus dikodekan base64.

Bidang opsional untuk GitHub Perusahaan:

aws secretsmanager create-secret \ --name argocd/github-enterprise-app \ --secret-string '{ "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=", "githubAppID":"123456", "githubAppInstallationID":"12345678", "githubAppEnterpriseBaseUrl":"https://github.example.com/api/v3" }'

Buat Rahasia Repositori untuk GitHub Aplikasi:

apiVersion: v1 kind: Secret metadata: name: my-repo-github-app namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: https://github.com/your-org/your-repo secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-app-AbCdEf project: default

Templat kredensi repositori

Untuk penggunaan kembali kredensyal di beberapa repositori (misalnya, semua repositori di bawah GitHub organisasi atau pengguna), gunakan templat kredensi repositori dengan. argocd.argoproj.io/secret-type: repo-creds Ini memberikan UX yang lebih baik daripada membuat rahasia repositori individual untuk setiap repositori.

Buat template kredensi repositori:

apiVersion: v1 kind: Secret metadata: name: github-org-creds namespace: argocd labels: argocd.argoproj.io/secret-type: repo-creds stringData: type: git url: https://github.com/your-org secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-org-AbCdEf

Template kredensyal ini berlaku untuk semua repositori yang cocok dengan awalan URL. https://github.com/your-org Anda kemudian dapat mereferensikan repositori apa pun di bawah organisasi ini di Aplikasi tanpa membuat rahasia tambahan.

Untuk informasi selengkapnya, lihat Kredensial Repositori dalam dokumentasi Argo CD.

penting

Pastikan Peran Kemampuan IAM Anda memiliki kebijakan terkelola yang arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess dilampirkan, atau izin yang setara termasuk secretsmanager:GetSecretValue dan izin dekripsi KMS. Lihat Pertimbangan Argo CD konfigurasi kebijakan IAM.

Menggunakan AWS CodeConnections

Untuk CodeConnections integrasi, lihatConnect ke repositori Git dengan AWS CodeConnections.

CodeConnections menyediakan otentikasi terkelola untuk GitHub, GitLab, dan Bitbucket tanpa menyimpan kredensyal.

Menggunakan Rahasia Kubernetes

Simpan kredensyal secara langsung di Kubernetes menggunakan metode CD Argo standar.

Untuk HTTPS dengan token akses pribadi:

apiVersion: v1 kind: Secret metadata: name: my-repo namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: https://github.com/your-org/your-repo username: your-username password: your-personal-access-token

Untuk SSH:

apiVersion: v1 kind: Secret metadata: name: my-repo-ssh namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: git@github.com:your-org/your-repo.git sshPrivateKey: | -----BEGIN OPENSSH PRIVATE KEY----- ... your private key ... -----END OPENSSH PRIVATE KEY-----

CodeCommit repositori

Untuk AWS CodeCommit, berikan CodeCommit izin Peran Kemampuan IAM Anda ()codecommit:GitPull.

Konfigurasikan repositori:

apiVersion: v1 kind: Secret metadata: name: codecommit-repo namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: https://git-codecommit.us-west-2.amazonaws.com/v1/repos/my-repo project: default

Untuk konfigurasi kebijakan IAM yang mendetail, lihatPertimbangan Argo CD.

Verifikasi koneksi repositori

Periksa status koneksi melalui Argo CD UI di bawah Pengaturan → Repositori. UI menunjukkan status koneksi dan kesalahan otentikasi apa pun.

Rahasia Repositori tidak termasuk informasi status.

Sumber daya tambahan