Score:1

ImagePullBackOff ผิดพลาดขณะดึงภาพนักเทียบท่าในโครงการอื่นใน Google Cloud

ธง sd

ฉันกำลังพยายามดึงภาพส่วนตัวจาก การลงทะเบียนสิ่งประดิษฐ์ repo ใน Google Cloud จากคลัสเตอร์ kubernetes ที่ทำงานในโครงการ Google Cloud อื่นโดยใช้ kubectl

kubernetes เวอร์ชัน 1.20.15-gke.1000 

บัญชีบริการสำหรับ kubernetes ได้รับสิทธิ์ artifactregistry.reader และ storageobject.viewer แล้วเนื่องจากรูปภาพอยู่ในโครงการที่แตกต่างจากบัญชีบริการ kubernetes

ฉันใช้ yaml ด้านล่างกับคำสั่ง kubectl

kubectl ใช้ -f proxy_with_workload_identity.yaml

apiVersion: แอป/v1
ประเภท: การปรับใช้
ข้อมูลเมตา:
  ชื่อ: แอปทดสอบ
ข้อมูลจำเพาะ:
  ตัวเลือก:
    ป้ายกำกับการแข่งขัน:
      แอป: แอปโครงการ
  กลยุทธ์:
    กลิ้งอัพเดท:
      แม็กซ์กระชาก: 1
      สูงสุดไม่พร้อมใช้งาน: 1
    ประเภท: RollingUpdate
  แม่แบบ:
    ข้อมูลเมตา:
      ป้ายกำกับ:
        แอป: แอปโครงการ
    ข้อมูลจำเพาะ:
      ตู้คอนเทนเนอร์:
        - สภาพแวดล้อม:
            - ชื่อ: DB_USER
              มูลค่าจาก:
                secretKeyRef:
                  คีย์: ชื่อผู้ใช้
                  ชื่อ: db-ข้อมูลรับรอง
            - ชื่อ: DB_PASS
              มูลค่าจาก:
                secretKeyRef:
                  คีย์: รหัสผ่าน
                  ชื่อ: db-ข้อมูลรับรอง
            - ชื่อ: DB_NAME
              ค่า: postgres
          รูปภาพ: "us-central1-docker.pkg.dev/myproject/docker-repo/test-app:v1" 
          ชื่อ: แอพ-โครงการ
          พอร์ต:
            - พอร์ตคอนเทนเนอร์: 9376
              โปรโตคอล: TCP
        - สั่งการ:
            - /cloud_sql_proxy 
            - "-instances=demo-dev:us-central1:1-sql-1=tcp:5432"
          รูปภาพ: "gcr.io/cloudsql-docker/gce-proxy:latest"
          ชื่อ: cloud-sql-proxy
          ทรัพยากร:
            คำขอ:
              ซีพียู: 200 ม
              หน่วยความจำ: 32Mi
          บริบทความปลอดภัย:
            runAsNonRoot: จริง
      ชื่อบัญชีบริการ: แอปทดสอบ

กำลังดึงอิมเมจ cloud-sql-proxy และคอนเทนเนอร์กำลังทำงาน แต่อิมเมจในที่เก็บส่วนตัวไม่ถูกดึง "us-central1-docker.pkg.dev/myproject/docker-repo/test-app:v1 "

เมื่อฉันตรวจสอบฝักฉันแสดงข้อผิดพลาดนี้:

รหัส = ไม่รู้จัก desc = ล้มเหลวในการดึงและแกะอิมเมจ "us-central1-docker.pkg.dev/myproject/docker-repo/test-app:v1:v1": ล้มเหลวในการแก้ไขการอ้างอิง "us-central1-docker.pkg dev/myproject/docker-repo/test-app:v1": ล้มเหลวในการอนุญาต: ดึงโทเค็น oauth ล้มเหลว: สถานะที่ไม่คาดคิด: 403 ถูกห้าม

ใครช่วยบอกวิธีแก้ปัญหานี้ให้ฉันที

Score:1
ธง pe

ใช้รูปภาพจากโครงการอื่นในการกำหนดค่าของคุณ

หน้านี้อธิบายวิธีกำหนดค่าโครงการของคุณเพื่อให้ Deployment Manager สามารถสร้างอินสแตนซ์เครื่องเสมือน Compute Engine โดยใช้อิมเมจระบบปฏิบัติการที่เป็นของโครงการอื่น

ฉันหวังว่าคุณจะใช้สิ่งนี้เพื่ออัปเดตรีจิสทรีระหว่างโครงการ

Score:0
ธง my

ฉันมีปัญหาที่คล้ายกันในสัปดาห์นี้ สมมติว่า GKE และบัญชีบริการของคุณอยู่ในโครงการ A และการลงทะเบียนสิ่งประดิษฐ์อยู่ในโครงการ B

  1. ตรวจสอบให้แน่ใจว่าคุณให้ artifactregistry.reader บทบาทในโครงการ B (ไม่ใช่ A)
  2. ตรวจสอบว่าคุณมอบบทบาทนี้ให้กับบัญชีบริการที่ถูกต้อง บัญชีบริการที่ดึงอิมเมจคือบัญชีบริการของโหนด ไม่ใช่บัญชีบริการของ Pod ในกรณีของฉัน ฉันใช้ GKE Autopilot ที่กำหนดค่าผ่าน TerraForm เนื่องจากข้อผิดพลาดในโมดูล Terraform บัญชีบริการที่ใช้โดยโหนดจึงเป็น ค่าเริ่มต้น (ซึ่งเป็นบัญชีบริการประมวลผลเริ่มต้น เช่น <project_number>@cloudservices.gserviceaccount.com)

คุณสามารถตรวจสอบว่าบัญชีบริการใดที่ nodepool ของคุณใช้งานอยู่ คลัสเตอร์คอนเทนเนอร์ gcloud อธิบาย ... สั่งการ.

ฉันหวังว่านี่จะช่วยได้!

โพสต์คำตอบ

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