تونل برپاست، یک ماشین مجازی به سرور داخلی می‌رسد و سرویس Cloud Run روی همان میزبان به پایان مهلت می‌خورد. این نقطه شروع معمول این کار است و تونل به‌ندرت همان چیزی است که اشکال دارد. یک نسخه Cloud Run به‌طور پیش‌فرض در VPC شما قرار نمی‌گیرد، و وقتی قرار گرفت، از آدرس‌های مبدأ خودش استفاده می‌کند، نه از زیرشبکه ماشین مجازی که پیش‌تر مسیریابی کرده‌اید. راهنمای زیر سرویس را وصل می‌کند، محدوده مبدأ واقعی آن را مسیریابی می‌کند و سپس مسیر را از نسخه‌ای که درخواست را سرو کرده اثبات می‌کند. آن را به همین ترتیب اجرا کنید، چون رد کردن گام نخست دلیل آن است که بسیاری از این موارد به تغییری در VPN ختم می‌شوند که چیزی را درست نمی‌کند.

پیش از عیب‌یابی تونل، نسخه را وصل کنید

Cloud Run از خروجی مستقیم VPC پشتیبانی می‌کند، که ترافیک سرویس را بدون پیونددهنده Serverless VPC Access روی زیرشبکه‌ای در VPC شما قرار می‌دهد. برای یک سرویس موجود، به‌روزرسانی چنین است:

gcloud run services update SERVICE \
  --region=REGION --network=NETWORK --subnet=SUBNET \
  --vpc-egress=private-ranges-only

جای‌نگهدارها را جایگزین کنید، بررسی کنید استقرار با ترافیک زنده چه می‌کند و زیرشبکه‌ای در منطقه سرویس با ظرفیت آدرس کافی و مجوزهای شبکه درست انتخاب کنید.

حالت خروجی را متناسب با مقصد انتخاب کنید

private-ranges-only مقصدهایی را که خصوصی طبقه‌بندی می‌کند از VPC عبور می‌دهد. این به معنای «هر چیزی که از طریق VPN قابل دسترسی است» نیست و آن شکاف زمانی ظاهر می‌شود که سرویس داخلی در محدوده‌ای باشد که این تنظیم آن را چنین طبقه‌بندی نمی‌کند. اگر مقصد پوشش داده نشود، all-traffic حالت مستند دیگر است و همه‌چیز را از VPC عبور می‌دهد، از جمله وابستگی‌های عمومی سرویس. آگاهانه انتخاب کنید و پیامد را در سابقه تغییر بنویسید.

سرویسی که از پیونددهنده استفاده می‌کند نیاز به مهاجرت دارد نه کلید تغییر، پس آن را برنامه‌ریزی کنید نه اینکه هر دو را پیکربندی کنید.

مبدأ Cloud Run را مسیریابی کنید، نه مبدأ ماشین مجازی را

خروجی مستقیم VPC آدرس‌های موقت را از زیرشبکه انتخاب‌شده تخصیص می‌دهد و طرف داخلی باید ترافیک را به همان محدوده برگرداند. مسیر برگشت یا مجوز فایروالی که برای زیرشبکه دیگری از ماشین مجازی نوشته شده، در نمودار درست به نظر می‌رسد و در عمل شکست می‌خورد. CIDR زیرشبکه را از VPC بگیرید نه از حافظه، سپس تأیید کنید که ACL رمزنگاری یا جدول مسیریابی دستگاه دوردست آن را شامل می‌شود.

با مسیریابی پویا، بررسی کنید Cloud Router در واقع چه چیزی اعلام می‌کند و VPC چه چیزی وارد می‌کند، از جمله هر سیاست اعلام سفارشی. مسیری که در کنسول وجود دارد اما برای این مقصد انتخاب نشده، همانند نبودن مسیر است.

سه شرطی که همه باید برقرار باشند

یک مسیر کارآمد به همه موارد زیر نیاز دارد و هر کدام به شیوه خود شکست می‌خورد:

  • یک مسیر در VPC به سمت پیشوند داخلی از طریق اتصال Cloud VPN موردنظر.
  • یک مسیر برگشت در طرف داخلی برای زیرشبکه Cloud Run.
  • دامنه حفاظت فایروال و IPsec که مبدأ، مقصد و درگاه را مجاز می‌کند.

مسیر گمشده معمولاً مانند پایان مهلت بدون هیچ شاهدی در طرف دوردست به نظر می‌رسد. مشکل مسیر برگشت مانند رسیدن درخواست و ناپدید شدن پاسخ به نظر می‌رسد. مشکل فایروال یا انتخابگر بسته به دستگاه می‌تواند مانند رد یا افتادن بی‌صدا به نظر برسد. یافتن اینکه کدام یک از این سه را دارید، فرمان بعدی را بسیار محدود می‌کند.

یک آدرس موقت Cloud Run را در فهرست مجاز قرار ندهید. از محدوده زیرشبکه و طراحی مجوزی که با برنامه سازگار است استفاده کنید.

نسخه‌ای را که درخواست را سرو کرده آزمایش کنید

پیش از آزمایش، تنظیمات شبکه استقرار و تخصیص ترافیک را بررسی کنید، چون به‌روزرسانی می‌تواند نسخه تازه‌ای بسازد در حالی که درخواست‌ها هنوز به نسخه قدیمی‌تر می‌رسند. سپس همان عملیاتی را که درخواست کاربر انجام می‌دهد، از همان نسخه اجرا کنید. اگر مقصد یک نام میزبان خصوصی است، تفکیک آن را در همان محیط و آدرسی که تولید کرده بررسی کنید، چون پاسخ DNS شرکتی لپ‌تاپ شما هیچ چیزی درباره فضای نام سرویس ثابت نمی‌کند. تأیید نام میزبان TLS و احراز هویت خود برنامه دوردست را حفظ کنید.

تأخیرهای مستند اتصال هنگام راه‌اندازی Direct VPC را انتظار داشته باشید و به جای تشخیص هر شروع سرد به‌عنوان تونل خراب، به مشتری راهبرد آمادگی یا تلاش دوباره بدهید.

بازگردانی و آنچه این کار نمی‌کند

برای بازگردانی، تنظیمات شبکه و خروجی سرویس را به مقادیر پیشین برگردانید و تأیید کنید نسخه پیشین هنوز ترافیک را سرو می‌کند. فرمان gcloud را در سابقه تغییر نگه دارید، چون عکس یک تغییر جزئی شش هفته بعد آشکار نیست. حذف اتصال VPC سرویس را به مسیر خروجی پیشین آن برمی‌گرداند، که ممکن است در هنگام یک رخداد دقیقاً همان چیزی باشد که می‌خواهید.

این طراحی اتصال‌هایی را پوشش می‌دهد که Cloud Run آغاز می‌کند و پاسخ‌های آن‌ها. این طراحی به شبکه داخلی سوکت آدرس‌پذیر درون سرویس نمی‌دهد، چون قرار گرفتن در معرض ورودی یک تصمیم ingress است.

مقالات مرتبط