Puncte:0

Cum să utilizați aws-iam-authenticator cu Terraform Cloud Runs la distanță?

drapel us

Folosesc deja Terraform cu succes Furnizorul Kubernetes pentru a gestiona diverse părți și servicii pe an EKS cluster în AWS. Aș dori să folosesc Terraform Cloud pentru a-l gestiona (și a profita de integrările frumoase Github/VCS). Însă kubeconfig pe care îl am pentru acel cluster folosește aws-iam-authenticator binar pentru a utiliza acreditările AWS (și, prin urmare, permisiunile IAM) pentru a se autentifica și acorda permisiuni, atât în ​​AWS, cât și în cadrul clusterului prin IRSA.

Instanțele Terraform Cloud nu au aws-iam-authenticator binar instalat și, prin urmare, deși au acreditările AWS corecte, nu le pot folosi pentru a se autentifica și a se conecta la clusterul EKS.

Utilizarea obișnuită (non-cloud) Terraform nu are această problemă, trebuie doar să vă asigurați că mașina pe care o rulați planifică/aplic de la are binarul și acreditările și „funcționează”, cum pot face ca Terraform Cloud să funcționeze în același mod?

Puncte:1
drapel us

Documente Terraform Cloud acoperiți acest lucru și nu este interzis, dar nici nu este tocmai încurajat. Există 2 metode menționate în acele documente, folosind a local-exec provider (a cărui utilizare este descrisă ca o „ultimă soluție” și potențial problematică), sau folosind a submodul. Documentele menționează, de asemenea, că ar trebui folosite numai „Standalone Binaries”. din fericire aws-iam-authenticator este într-adevăr disponibil ca un binar static autonom pentru multe sisteme. Din păcate, documentația, dincolo de o mențiune a submodulelor, nu acoperă pașii necesari pentru ca acest lucru să funcționeze.

Sperăm că Hashicorp va oferi o modalitate mai puțin hacker și mai susținută de a personaliza aceste medii în viitor, dar până atunci...

În primul rând, avem nevoie de un binar compatibil și, deși nu știm exact ce sistem de operare/imagine rulează instanțele Terraform Cloud, știm din documentatia că este compatibil Linux x86_64. Prin urmare, din moment ce aws-iam-authenticator este disponibil ca un binar static autonom pentru Linux x86_64, ceea ce trebuie să facem este să introducem acel binar în mediu și apoi să îl punem la dispoziție instanței în general (din moment ce nu controlăm modul în care este numit în mod specific).

Terraform Cloud vă permite să manipulați variabilele de mediu, putem realiza acest lucru prin manipularea $PATH variabilă odată ce avem binarul pe gazdă. Cel mai simplu mod de a face acest lucru ar fi să adăugați binarul la configurația dintr-un folder, totuși, dacă doriți să utilizați acest lucru pentru mai multe configurații, fără a fi nevoie să gestionați binarul separat în fiecare (imaginați-vă că trebuie să le actualizați pe toate separat), Aș recomanda să faceți acest lucru ca sub-modul în depozitul dvs. git.

Iată un exemplu de a repo public care conține binarul, ați adăuga acest lucru la repo-ul dvs. ca submodul, după cum urmează:

submodulul git adaugă https://github.com/comerford/tc-tools.git

Puteți apoi să commiteți/împingeți ca de obicei, asigurându-vă că setările de control al versiunii pentru spațiul dvs. de lucru sunt setate pentru a clona submodulele după cum urmează:

clonarea submodulului este activată

În cele din urmă, pentru a vă asigura că, indiferent de cum se numește binarul, trebuie să faceți modificări la CALE variabilă de mediu, astfel încât să vadă noul dvs. binar, dar, de asemenea, să nu rupă nimic. Iată ENV variabilă care a funcționat pentru mine având în vedere submodulul de mai sus:

Variabila PATH de lucru pe Terraform Cloud

Pentru a da acel șir într-un format mai utilizabil:

„~/tc-tools:/home/terraform/tc-tools:./tc-tools:/usr/bin:/usr/local/bin:/bin:$PATH”

Este nevoie de o ghicire a căilor probabile și nu sunt 100% sigur care dintre ele funcționează, deoarece nu am vrut să provoc rulări întrerupte de dragul câtorva personaje.

Deși acest lucru este special pentru aws-iam-authenticator binar, ar trebui să funcționeze ca metodă generică pentru orice astfel de binar static Linux x86_64 de care aveți nevoie.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.