Score:0

วิธีใช้ aws-iam-authenticator กับ Terraform Cloud Runs ระยะไกล

ธง us

ฉันใช้ Terraform กับไฟล์ ผู้ให้บริการ Kubernetes เพื่อจัดการส่วนต่าง ๆ และบริการบน กศน คลัสเตอร์ใน AWS ฉันต้องการใช้ เทอร์ราฟอร์มคลาวด์ เพื่อจัดการ (และใช้ประโยชน์จากการผสานรวม Github/VCS ที่ดี) อย่างไรก็ตาม คุเบะคอนฟิก ที่ฉันมีสำหรับคลัสเตอร์นั้นใช้การ aws-iam-authenticator ไบนารีเพื่อใช้ประโยชน์จากข้อมูลรับรอง AWS (และด้วยเหตุนี้สิทธิ์ IAM) เพื่อตรวจสอบสิทธิ์และให้สิทธิ์ ทั้งใน AWS และภายในคลัสเตอร์ผ่าน กรมสรรพากร.

อินสแตนซ์ Terraform Cloud ไม่มี aws-iam-authenticator ติดตั้งไบนารีและด้วยเหตุนี้แม้ว่าจะมีข้อมูลรับรอง AWS ที่ถูกต้อง แต่ก็ไม่สามารถใช้ประโยชน์จากสิ่งเหล่านี้เพื่อตรวจสอบสิทธิ์และเชื่อมต่อกับคลัสเตอร์ EKS

การใช้ Terraform ปกติ (ไม่ใช่ระบบคลาวด์) ไม่มีปัญหานี้ คุณเพียงแค่ต้องแน่ใจว่าเครื่องที่คุณใช้งานอยู่ วางแผน/สมัคร จากมีไบนารีและข้อมูลรับรองและ "ใช้งานได้" ฉันจะทำให้ Terraform Cloud ทำงานในลักษณะเดียวกันได้อย่างไร

Score:1
ธง us

เอกสาร Terraform Cloud ครอบคลุมสิ่งนี้และไม่ได้ห้าม แต่ก็ไม่สนับสนุนเช่นกัน มี 2 ​​วิธีที่กล่าวถึงในเอกสารเหล่านั้น โดยใช้ a ผู้บริหารท้องถิ่น ผู้จัดเตรียม (การใช้ซึ่งอธิบายว่าเป็น "ทางเลือกสุดท้าย" และอาจเป็นปัญหาได้) หรือการใช้ a โมดูลย่อย. เอกสารยังระบุด้วยว่าควรใช้เฉพาะ "ไบนารีแบบสแตนด์อโลน" เท่านั้น ขอบคุณ aws-iam-authenticator มีอยู่ในรูปแบบไบนารีแบบสแตนด์อโลนแบบสแตติกสำหรับระบบจำนวนมาก น่าเสียดายที่เอกสารนอกเหนือจากการกล่าวถึงโมดูลย่อยนั้นไม่ครอบคลุมถึงขั้นตอนที่จำเป็นในการทำงานนี้

หวังว่า Hashicorp จะให้วิธีการแฮ็คน้อยลงและได้รับการสนับสนุนมากขึ้นในการปรับแต่งสภาพแวดล้อมเหล่านี้ในอนาคต แต่จนกว่าจะถึงตอนนั้น...

อันดับแรก เราต้องมีไบนารีที่เข้ากันได้ และแม้ว่าเราจะไม่ทราบแน่ชัดว่า OS/Image ใดที่รันโดยอินสแตนซ์ Terraform Cloud แต่เราทราบจาก เอกสาร ว่ามันเข้ากันได้กับ Linux x86_64 ดังนั้น ตั้งแต่ aws-iam-authenticator พร้อมใช้งานเป็นไบนารีคงที่แบบสแตนด์อโลนสำหรับ Linux x86_64 สิ่งที่เราต้องทำคือแนะนำไบนารีนั้นในสภาพแวดล้อม จากนั้นทำให้พร้อมใช้งานสำหรับอินสแตนซ์โดยทั่วไป (เนื่องจากเราไม่ได้ควบคุมวิธีการเรียกมันโดยเฉพาะ)

Terraform Cloud อนุญาตให้คุณจัดการตัวแปรสภาพแวดล้อม เราสามารถทำได้โดยการจัดการ $เส้นทาง ตัวแปรเมื่อเรามีไบนารีในโฮสต์ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือเพิ่มไบนารีลงในการกำหนดค่าภายในโฟลเดอร์ อย่างไรก็ตาม หากคุณต้องการใช้สิ่งนี้สำหรับการกำหนดค่าหลายรายการโดยไม่ต้องจัดการไบนารีแยกกันในแต่ละไฟล์ (ลองนึกภาพว่าต้องอัปเดตทั้งหมดแยกกัน) ฉันขอแนะนำให้ทำสิ่งนี้เป็นโมดูลย่อยในที่เก็บ git ของคุณ

นี่คือตัวอย่างของ repo สาธารณะที่มีไบนารีคุณจะเพิ่มสิ่งนี้ลงใน repo ของคุณเป็นโมดูลย่อยดังนี้:

git submodule เพิ่ม https://github.com/comerford/tc-tools.git

จากนั้น คุณสามารถคอมมิท/พุชได้ตามปกติ ตรวจสอบให้แน่ใจว่าการตั้งค่าการควบคุมเวอร์ชันสำหรับเวิร์กสเปซของคุณถูกตั้งค่าให้โคลนโมดูลย่อยตามด้านล่าง:

เปิดใช้งานการโคลนโมดูลย่อย

สุดท้าย เพื่อให้แน่ใจว่าไม่ว่าจะเรียกไบนารีว่าทำงานอย่างไร คุณต้องทำการเปลี่ยนแปลงกับ เส้นทาง ตัวแปรสภาพแวดล้อมเพื่อที่จะเห็นไบนารีใหม่ของคุณ แต่ยังไม่ทำลายสิ่งใด นี่คือ ENV ตัวแปรที่ใช้งานได้สำหรับฉันจากโมดูลย่อยด้านบน:

เส้นทางการทำงานตัวแปรบน Terraform Cloud

เพื่อให้สตริงนั้นอยู่ในรูปแบบที่ใช้งานได้มากขึ้น:

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

เป็นการคาดเดาเส้นทางที่น่าจะเป็นไปได้ และฉันก็ไม่แน่ใจ 100% ว่าเส้นทางไหนใช้ได้ผล เพราะฉันไม่ต้องการทำให้การทำงานขาดตอนเพราะตัวละครบางตัว

แม้ว่านี่จะเป็นเฉพาะสำหรับ aws-iam-authenticator ไบนารีควรทำงานเป็นวิธีการทั่วไปสำหรับไบนารีแบบคงที่ของ Linux x86_64 ที่คุณต้องการ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา